我正在开发一个将大量使用JBoss Messaging(JMS)的项目.我的任务是为其他开发人员构建一个易于使用的Messaging包装器,并且正在考虑使用JMS的Message Selectors来提供过滤技术,以便将不必要的消息发送保持在最低限度.我很好奇是否有人在表演方面有任何经验?我担心JMS提供商可能会陷入消息选择器的困境,从而有效地破坏了整个目的.然而,它比为每种消息类型创建一长串主题/队列要好得多.
最终,我无疑会最终使用两者的组合,但我关注的是对性能的影响,无论我更倾向于哪种方式.
JMS优于Webservices有什么大优势,反之亦然?
(Web服务是否膨胀?JMS总体上更好地提供接口吗?)
我正在浏览一个开源消息传递软件,经过一些研究,我发现了这三个产品.我已经把这些用于初步测试,让他们处理队列和主题的消息,从我所读到的,所有这三个产品都是大多数公司的开源消息解决方案的好选择.我想知道这些产品可能具有哪些优势?我特别感兴趣的是消息吞吐量,包括持久消息吞吐量,安全性,可伸缩性,可靠性,支持,路由功能,度量和监视等管理选项,以及每个程序在大型业务环境中运行的程度.
任何人都可以推荐一种工具,用于快速将测试消息发布到JMS队列中吗?该工具应该允许用户输入一些数据,可能是XML有效负载,然后将其提交到队列?我知道我可能会很快地把事情搞得很快但是我想在重新发明轮子之前先问一下.干杯.
我正在为我的团队的一个应用程序研究排队解决方案.理想情况下,我们希望能够将其配置为轻量级进程内代理(用于线程之间的低吞吐量消息传递)和外部代理.是否有可以执行此操作的MQ服务器?大多数似乎都需要将设置作为外部实体.ZeroMQ似乎最接近于进程内解决方案,但它似乎更像是"类固醇上的UDP套接字",我们需要可靠的交付.
有一条消息(文本),我确定知道哪种格式和内容.
现在,实现了Java中用于从文件中解析和读取此消息的类.
在现实世界中,此消息将来自Message Queue.
现在我应该在我的本地PC上模拟,模拟或生成Message Queue以进行测试.
Java规范(java jms):
JMS provider: A messaging system that implements the JMS specification.
JMS clients: Java applications that send and receive messages.
Messages: Objects that are used to communicate information between JMS clients.
Run Code Online (Sandbox Code Playgroud)
关于这个规范,我需要JMS提供者.
JMS客户端 - 这是我读取消息的类.
消息本身我知道.
那么问题是如何启动消息队列?
我如何从Java代码中以programmaticaly方式模拟它?我能以某种方式嘲笑它吗?
谢谢.
我将为项目选择一个JMS消息代理.JMS服务器稳定并且可以处理大量消息是至关重要的.我缩小了列表以包含Active MQ和JBoss Messaging.
我想知道你是否有任何经验,甚至更好,在同一环境中尝试过这两种方法.任何研究论文或类似文件的链接都会很好.
我第一次测试Oracle AQ.我已经设法在我创建的队列中创建了2000行测试插入.
现在,我想清除那些.在我自学的时候,我将到期时间定为一个月.我不能等那么久.我不认为我应该从队列表中删除它们.
最好的方法是什么?
有一种方法可以抑制ActiveMQ服务器上定义的队列上的重复消息吗?
我尝试手动定义JMSMessageID,(message.setJMSMessageID("uniqueid")),但服务器忽略此修改并传递带有内置生成的JMSMessageID的消息.
根据规范,我没有找到关于如何重复删除邮件的参考.
在HornetQ中,为了解决这个问题,我们需要在消息定义上声明HQ特定属性org.hornetq.core.message.impl.HDR_DUPLICATE_DETECTION_ID.
即:
Message jmsMessage = session.createMessage();
String myUniqueID = "This is my unique id"; // Could use a UUID for this
message.setStringProperty(HDR_DUPLICATE_DETECTION_ID.toString(), myUniqueID);
Run Code Online (Sandbox Code Playgroud)
有人知道ActiveMQ是否有类似的解决方案?
我们在经纪人网络中设置了4个ActiveMQ代理(每个代理在一个单独的服务器上运行).大约有60个生产者.生产者使用JDNI从Glassfish查找ActiveMQ连接工厂.
Glassfish中配置的ActiveMQ URI如下:
failover:(tcp://phxgapm01:61616,tcp://phxgapm02:61616,tcp://phxgapm03:61616,tcp://phxgapm04:61616)?randomize=true&backup=false&maxReconnectAttempts=8
Run Code Online (Sandbox Code Playgroud)
每个生成器进程执行javax.jms.ConnectionFactory的JNDI查找,然后创建1个javax.jms.Connection.当生成器运行时,它将定期创建一个javax.jms.Session和javax.jms.MessageProducer,将一些消息发送到队列,然后关闭Session和MessageProducer.
这就是所有背景 - 现在我的问题.从一些但不是所有的生产者,我们将看到如下的日志输出流:
2014-12-30 21:07:06,534 INFO FailoverTransport - Successfully connected to tcp://phxgapm03:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,538 INFO FailoverTransport - Successfully connected to tcp://phxgapm04:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,544 INFO FailoverTransport - Successfully connected to tcp://phxgapm02:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,548 INFO FailoverTransport - Successfully connected to tcp://phxgapm04:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,552 INFO FailoverTransport - Successfully connected to tcp://phxgapm01:61616 - [ActiveMQ Task-1]
2014-12-30 21:07:06,556 INFO FailoverTransport - Successfully connected to tcp://phxgapm02:61616 - [ActiveMQ Task-1] …Run Code Online (Sandbox Code Playgroud) jms ×10
java ×7
jboss ×2
messaging ×2
amqp ×1
duplicates ×1
glassfish ×1
hornetq ×1
middleware ×1
mocking ×1
mom ×1
mq ×1
oracle ×1
oracle-aq ×1
performance ×1
provider ×1
qpid ×1
queue ×1
tooling ×1
web-services ×1