HornetQ集群节点消费者

时间:2013-06-05 19:23:51

标签: cluster-computing mule hornetq

我有一个带有2个节点的HornetQ独立群集,并且Mule ESB配置为连接HornetQ群集发现组。

我写了一个Mule Callback Listener,它正在消耗来自HornetQ Cluster的消息。但群集中的第二个节点表现得像备份或故障转移服务器。当我发送多条消息时,它总是只传递给node1。当我停止node1然后node2正在选择消息。对于node2,JConsole始终将消费者数量显示为0。而node1有6个消费者,如Mule JMS connector-> numberOfConsumers属性中所定义,如下面的配置所示。

<jms:connector name="hornetq-connector" username="guest" 
    maxRedelivery="5" password="guest" specification="1.1"
    connectionFactory-ref="connectionFactory" numberOfConsumers="6" >
    <spring:property name="retryPolicyTemplate" ref="ThreadingPolicyTemplate"  />
</jms:connector>

我只有一个在mule flow中定义的消费者,如下所示。

<flow name="Flow2" doc:name="Flow2">
    <jms:inbound-endpoint queue="InboundQueue"
     connector-ref="hornetq-connector">
        <jms:transaction action="ALWAYS_BEGIN" timeout="10000" />
    </jms:inbound-endpoint>

    <component class="com.test.Consumer" />
</flow>

将Mule Callback java类添加为组件,如上面的代码()所示。请找到以下代码。

public class Consumer实现org.mule.api.lifecycle.Callable {

private static DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");

@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
    // TODO Auto-generated method stub

    System.out.println(df1.format(new Date().getTime())+"Consumer:Message Received,"+ Thread.currentThread()+ "," + eventContext.getMessageAsString());
    Thread.sleep(5000);
    System.out.println(df1.format(new Date().getTime())+"Consumer: Message process complete, "+ Thread.currentThread()+ ","  + eventContext.getMessageAsString());

    return "Success";
}

}

如何在所有HornetQ群集节点上分发这个消费者?

0 个答案:

没有答案