hornerq JMSbridge确认

hornerq JMSbridge确认,jms,overflow,hornetq,bridge,Jms,Overflow,Hornetq,Bridge,我最近在学习Hornetq代码,对JMSbridge有疑问 您可以看到,JMSbridgeImpl.java中有一个名为“sendMessages()”的有趣程序。游戏将消息发送到远程JMSServer,但不进行确认 但是在名为“SendBatchNonTransactive()”的趣味中,只有最后一条消息,例如“messages.getLast().acknowledge();” 所以问题是:为什么不在名为“sendMessages()”的乐趣中通过each msg进行确认 抱歉,我的英语太差

我最近在学习Hornetq代码,对JMSbridge有疑问

您可以看到,JMSbridgeImpl.java中有一个名为“sendMessages()”的有趣程序。游戏将消息发送到远程JMSServer,但不进行确认

但是在名为“SendBatchNonTransactive()”的趣味中,只有最后一条消息,例如“messages.getLast().acknowledge();”

所以问题是:为什么不在名为“sendMessages()”的乐趣中通过each msg进行确认

抱歉,我的英语太差了

我在线等待你的帮助!谢谢大家!

-------------------------------------------- 哦,非常感谢“Moj Far”的第一个问题,我知道了

但我还有一个问题:我修改了hornetQ源代码, 我想使用ClientConsumer(have successful init)在本地HornetQ中获取msg
并使用JMS producer将消息发送到远程JMSServer

在“SourceReceiver”类的“Run”函数中,我可以这样做:

if (bridgeType == JMSBridgeImpl.ALL_NETTY_MODE ) {
    msg = sourceConsumer.receive(1000);
} else {        /* core client receive msg */
    cmsg = localClientConsumer.receive(1000);
    if (cmsg != null) {
        hq_msg = HornetQMessage.createMessage(cmsg, localClientSession);
        //hq_msg = HornetQMessage.createMessage(cmsg, null);
        hq_msg.doBeforeReceive();
        //cmsg.acknowledge();       do ack after send
        msg = hq_msg;
    }
}                                   
但运行2小时后,VM内存溢出

我还尝试不使用localClientSession创建HornetQMessage,但内存也溢出


我的代码有问题吗?

我们有两种方法来保证发送消息:

  • 事务性(在sendBatchLocalTx()和sendBatchXA()中使用)
  • 非事务性或确认(用于SendBatchNoTransact())
  • 所有sendBatchLocalTx()、sedBatchXA()和SendBatchNoTransact()都使用sendMessages()发送消息,然后保证以自己的方式发送消息(提交事务或确认消息)


    在sendbatchnontransact()中,它使用客户端确认模式;在此模式下,通过确认消息(此处为最后一条消息),将确认当前会话中发送的所有消息

    我认为最好在一个新的问题中提出这个问题,这样其他人就可以帮助回答它;)你是什么意思?你能发布你得到的例外情况吗。在这个给定的代码示例中,不清楚要关闭哪些资源;别忘了关闭你的资源。