# IQueueCache.TryGetCacheCursorAtPosition(StreamId, StreamSubscriptionStartPosition)

[Type overview](/orleans/docs/api/csharp/microsoft.orleans.streaming/orleans.streams.iqueuecache/) | [Methods](/orleans/docs/api/csharp/microsoft.orleans.streaming/orleans.streams.iqueuecache/methods/)

[Source](https://github.com/dotnet/orleans/blob/1644940b035c7bdf215a4fd7135757c06bcfe9ec/src/Orleans.Streaming/QueueAdapters/IQueueCache.cs#L82-L92)

```csharp
public virtual QueueCacheCursorResult<IQueueCacheCursor> TryGetCacheCursorAtPosition(StreamId streamId, StreamSubscriptionStartPosition startPosition)
```

Attempts to acquire a stream message cursor at the specified subscription start position.

### Parameters

- `streamId` (`StreamId`): The stream identifier.
- `startPosition` (`StreamSubscriptionStartPosition`): The initial subscription position.

### Returns

A successful result containing the acquired cursor, a cache-miss result containing the unavailable position and current cache bounds, or [QueueCacheCursorResultKind](/orleans/docs/api/csharp/microsoft.orleans.streaming/orleans.streams.queuecachecursorresultkind/).

### Exceptions

- `System.ArgumentOutOfRangeException`: `startPosition` is not defined.
