【问题标题】:Cancel Session ServiceBus consumer actvity from publisher从发布者取消会话服务总线消费者活动
【发布时间】:2021-02-11 06:44:29
【问题描述】:

我正在从服务总线发布者发送一条消息,实际上是在进行 5 秒的 db 轮询。

var message = new Message(Encoding.UTF8.GetBytes(object));
message.SessionId = sessionId;
return client.SendAsync(message);

在消费者方面,我正在接收消息并进行一些处理,这可能需要也可能不会超过 5 秒。我们可以致电CompleteAsync()AbadonAsync() 来关闭该会话。

我们可以从发布者客户端取消吗?

基本上,我想要这样的东西

queueClient.publish(message); // publish message to queue
var tokenSource - new CancellationToken();
var task = Task.Run(()=>{
    ...
}, tokenSource.Token);
if(!task.Wait(5000, tokenSource.Token))
{
  queueClient.Cancel(); // <-----Cancel/Abadon processing in service bus consumer.
}

【问题讨论】:

    标签: c# azure-servicebus-queues


    【解决方案1】:

    您可以尝试为队列客户端配置超时时间

    MessagingFactorySettings factorySettings = new MessagingFactorySettings()
            {
                TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider("[keyName]", "[sharedAccessKey]"),
                OperationTimeout = TimeSpan.FromSeconds(5),
            };
    
            MessagingFactory messagingFactory = MessagingFactory.Create(serviceBusUri, factorySettings);
            QueueClient Client = messagingFactory.CreateQueueClient("[QueueName]");
    

    【讨论】:

      猜你喜欢
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多