var description = new QueueDescription(QueueName)
{
RequiresSession = true
};
namespaceManager.CreateQueue(description);
还有什么方法我只能从该会话的deadlettered队列中接收消息 .
根据我的测试,我们无法使用以下代码从deadletter队列中获取死信队列消息
var dlqName= QueueClient.FormatDeadLetterPath(queueName);
var dlqClient = QueueClient.CreateFromConnectionString(connectionstring, dfQueue);
var gid = Guid.NewGuid().ToString();
var messageSession = client.AcceptMessageSession(gid);
var receiveMessage = messageSession.Receive();
3 回答
我不认为您可以为Service Bus队列执行此操作 . 您可以通过Service Bus主题和过滤订阅来实现类似的功能 .
因此,您将消息发送到主题,然后您必须为每个会话ID创建一个类似于此的订阅:
然后只接收来自此订阅的消息:
消息会话功能专门为此而设计 .
QueueClient.AcceptMessageSessionAsync(sessionID)允许实现正常队列 . 至于DLQ - 不确定是否有效 .
正如肖恩·费尔德曼提到的QueueClient.AcceptMessageSessionAsync(sessionID)允许实现正常队列 .
如果想使用
QueueClient.AcceptMessageSessionAsync(sessionID)
来接收队列消息,我们需要创建RequiresSession
true ,根据我的测试,我们无法使用以下代码从deadletter队列中获取死信队列消息
我的解决方法是我们可以获取死信队列消息并提交到队列或其他正常队列 .