最近在学习Hornetq代码,对JMSbridge有疑问。
您可以看到,在 JMSbridgeImpl.java 中有一个名为“sendMessages()”的乐趣。乐趣将味精发送到远程 JMSServer,但不做确认。
但是在名为“sendBatchNonTransacted()”的乐趣中,只是用最后一个消息确认,例如“messages.getLast().acknowledge();”
所以问题是:为什么不通过名为“sendMessages()”的乐趣中的每个味精来确认?
抱歉,我的英语是台球。
我在线等你帮忙!谢谢你 !
------------------------------------------
哦,非常感谢“Moj Far”的第一个问题,我明白了。
但我还有一个问题:我修改了hornetQ 的源代码,我想使用ClientConsumer(初始化成功)在本地HornetQ 中获取msg,
并使用JMS 生产者将msg 发送到远程JMSServer。
在“SourceReceiver”类的“运行”函数中,我修改为:
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,但是内存也溢出了。
我的代码有问题吗?