将过滤后的消息保留在Azure Service Bus主题订阅中

时间:2019-07-03 08:25:27

标签: azure azureservicebus azure-servicebus-topics

我有一个主题,里面只有一个订阅。订阅具有一个过滤器,该过滤器过滤一组UserProperty。过滤效果很好。

问题是,如果根据订阅的筛选器检查了一条消息,但该消息不符合规则,则该消息将被删除。有没有一种方法可以将邮件保留在订阅中而不删除它们?

我想要这的原因是我们让我们的服务在部署时配置了订阅规则,并且带有消息代理的服务正在发送新的消息集,该服务可能会在带有订阅客户端的服务更改规则集之前被部署和新的业务逻辑。我们不想丢失在部署过程中发送的消息,并在新服务退出时对其进行处理。

干杯。

1 个答案:

答案 0 :(得分:0)

正如其他人所提到的,这是设计使然,根据您的要求,您可以选择以下选项

  • 事先创建订阅,这些订阅将保留已过滤的消息,并且订阅者服务会在订阅出现时从订阅中获取它们。

  • 在队列中使用Message Sessions,每个订阅者只能使用一个会话。不过,这里的要求是让您的初始部署发送在这些消息上设置了唯一的SessionId的消息(基本上应该基于您现在拥有的过滤器),而不是稍后使用过滤器