【发布时间】:2017-11-21 10:38:02
【问题描述】:
这个想法是将消息发送到主题并仅通过 pub/sub(无队列)并使用 PERSISTENT 传递模式以条带形式使用它们。为简单起见,假设生产者将消息发布到具有以下层次结构的特定主题:bus/<componentId/<transactionId>。
消费者希望接收主题“条带”,为简单起见,假设有 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 是否有可能?
【问题讨论】: