我想實現一個ASP.NET核心API,它不響應HTTP請求,但在啓動時開始監聽Google Cloud Pub/Sub消息,並且在其整個生命週期中一直保持無限期地監聽。如何在ASP.NET Core應用程序中持續收聽Pub/Sub消息?
使用官方Pub/Sub SDK實現此功能的首選方式是什麼?
我能想到的方法有兩種:
方法1:只需使用一個SimpleSubscriber
,並在Startup.Configure
開始聽消息:
public void Configure(IApplicationBuilder app)
{
var simpleSubscriber = await SimpleSubscriber.CreateAsync(subscriptionName);
var receivedMessages = new List<PubsubMessage>();
simpleSubscriber.StartAsync((msg, cancellationToken) =>
{
// Process the message here.
return Task.FromResult(SimpleSubscriber.Reply.Ack);
});
...
}
方法2:專門使用一個庫創建用於定期運行作業,例如Quartz,Hangfire或FluentScheduler,並且每次觸發作業時,都會使用SubscriberClient
來提取新消息。
哪一個是首選方法?第一個似乎更簡單,但我不確定它是否真的可靠。
@Flater這是一個在Kubernetes中運行的ASP.NET Core應用程序。我希望該應用具有一些REST端點,**和**不斷監聽一些發佈/訂閱消息。 (我知道我可以將這兩件事分成兩個部分,但如果可能的話,爲了方便起見,我想保留它。) –
我會從最簡單的方法開始,然後根據需要移動到圖書館。在你的示例中,我只添加了用於在'靜態字段中的某處保留'simpleSubscriber'的代碼,以保護對象免受GC – Shrike
的影響。就我*知道*而言,第一種方法應該沒問題 - 但我正在與同事誰知道更多。 –