# AsyncBatchObservableExtensions.SubscribeAsync(IAsyncBatchObservable&lt;T&gt;, IAsyncBatchObserver&lt;T&gt;, StreamSubscriptionStartPosition)

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

[Source](https://github.com/dotnet/orleans/blob/1644940b035c7bdf215a4fd7135757c06bcfe9ec/src/Orleans.Streaming/Extensions/AsyncBatchObservableExtensions.cs#L32-L46)

```csharp
public static Task<StreamSubscriptionHandle<T>> SubscribeAsync<T>(this IAsyncBatchObservable<T> obs, IAsyncBatchObserver<T> observer, StreamSubscriptionStartPosition startPosition)
```

Subscribe a consumer to this batch observable using the specified initial position.

### Parameters

- `obs` (`IAsyncBatchObservable<T>`): The observable.
- `observer` (`IAsyncBatchObserver<T>`): The asynchronous batch observer to subscribe.
- `startPosition` (`StreamSubscriptionStartPosition`): The initial subscription position.

### Returns

A promise for a `Orleans.Streams.StreamSubscriptionHandle-1` that represents the subscription.
