我有三臺機器位於不同的網絡:羣集WildFly 10域消息
- 作爲主
- 作爲節點-1
- 作爲節點-2
在如-master我將WildFly作爲域主機主機,兩個節點將WildFly作爲域主機 - 從機,每個都在全功能服務器組中啓動一個實例。在as-master Web控制檯中,我可以看到full-ha配置文件運行時中的兩個節點,如果我部署WAR,它將在兩個節點上正確啓動。
現在,我試圖實現的是兩個WAR實例之間的消息傳遞,即從as-node-1中的生產者實例發送消息,所有節點中的消費者都應該接收消息。
這是我的嘗試:添加了一個話題WildFly domain.xml
:
<jms-topic name="MyTopic" entries="java:/jms/my-topic"/>
創建JAX-RS端點觸發綁定到該話題生產者:
@Path("jms")
@RequestScoped
public class MessageEndpoint {
@Inject
JMSContext context;
@Resource(mappedName = "java:/jms/my-topic")
Topic myTopic;
@GET
public void sendMessage() {
this.context.createProducer().send(this.myTopic, "Hello!");
}
}
創建一個MDB監聽到主題:
@MessageDriven(activationConfig = {
@ActivationConfigProperty(
propertyName = "destination",
propertyValue = "java:/jms/my-topic"
),
@ActivationConfigProperty(
propertyName = "destinationType",
propertyValue = "javax.jms.Topic")
)
)
public class MyMessageListener implements MessageListener {
private final static Logger LOGGER = /* ... */
public void onMessage(Message message) {
try {
String body = message.getBody(String.class)
LOGGER.info("Received message: " + body);
} catch (JMSException e) {
throw new RuntimeException(e);
}
}
}
但是當我curl as-node-1/jms
我看到日誌o只有as-node-1,而當我curl as-node-2/jms
我只看到as-node-2的日誌。
不應該在部署WAR的所有節點上傳遞消息嗎?我錯過了什麼?