gpt4 book ai didi

java - 我可以使用 Java 在 Solace 中使用通配符订阅持久主题端点吗?

转载 作者:行者123 更新时间:2023-12-02 11:58:59 25 4
gpt4 key购买 nike

这个想法是将消息发送到主题并仅通过发布/订阅(没有队列)并使用持久传递模式以 strip 方式使用它们。为了简单起见,假设生产者将消息发布到具有以下层次结构的特定主题:bus/<componentId/<transactionId> .

消费者希望接收主题“stripes”,为简单起见,假设有 10 个消费者,他们希望通过 transactionId 在彼此之间划分流量:

  • bus/*/0*
  • bus/*/1*
  • ...
  • bus/*/9*

当我尝试使用通配符订阅主题端点时,如下所示:

    DurableTopicEndpoint topicEndpoint = JCSMPFactory.onlyInstance().createDurableTopicEndpoint("bus/*/1*");

ConsumerFlowProperties propsFlow = new ConsumerFlowProperties();
propsFlow.setEndpoint(topicEndpoint);

我收到以下异常:

Exception in thread "main" java.lang.IllegalArgumentException: Topic Endpoint name "bus/*/1*" contains illegal character [*]
at com.solacesystems.common.util.DestinationUtil.isValidEndpointName(DestinationUtil.java:234)
at com.solacesystems.common.util.DestinationUtil.isValidTopicEndpointPhysicalName(DestinationUtil.java:209)
at com.solacesystems.common.util.DestinationUtil.isValidDTEPhysicalName(DestinationUtil.java:213)
at com.solacesystems.jcsmp.impl.SessionModeSupport.createFlow(SessionModeSupport.java:247)
at com.solacesystems.jcsmp.impl.SessionModeSupport.createFlow(SessionModeSupport.java:170)
at com.solacesystems.jcsmp.impl.JCSMPBasicSession.createFlow(JCSMPBasicSession.java:953)

鉴于此article的“向主题端点添加订阅”部分 - 使用 Solace Java API 是否可以实现?

最佳答案

这里有两个问题。

  1. 您正在尝试创建一个名为 bus/*/1*TopicEndpoint。请注意,这是 TopicEndpoint 的名称,而不是它订阅的主题。 * 不是 TopicEndpoint 名称的有效字符。

  2. TopicEndpoints 只允许有一个订阅。这意味着您只能订阅 bus/*/0*。如果您想订阅 bus/*/0* 一直到 bus/*/9*,您将需要使用 Queue code> 而不是 TopicEndpoint

关于java - 我可以使用 Java 在 Solace 中使用通配符订阅持久主题端点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47397071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com