Tag: activemq

Active MQ vs JBoss Messaging

我将为项目选择一个JMS消息代理。 JMS服务器稳定并且可以处理大量消息是至关重要的。 我缩小了列表以包含Active MQ和JBoss Messaging。 我想知道你们是否有任何经验,甚至更好的在同一环境中尝试过这两种方法。 任何研究论文或类似论文的链接都会很好。

无法使用基于JMS的代码和amqp 1.0访问ActiveMQ

我正在尝试使用AMQP 1.0连接到ActiveMQ代理,但我想在我的应用程序代码中使用JMS。 我对使用JMS感兴趣主要是因为我希望开发人员能够使用他们已经熟悉的API。 我在localhost上运行ActiveMQ 5.14.0,代码如下: public static void main(String[] args) throws JMSException, InterruptedException { Connection connection = null; try { // Producer ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(“amqp://localhost:5672”); connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Topic topic = session.createTopic(“customerTopic”); // Publish MessageProducer producer = session.createProducer(topic); for ( int i = 0; i < 10; […]

ActiveMQ限制消费者

我想对activeMQ中的某个队列的消费者进行限制,在hornetq中(jboss,这是通过对mdb Consumer的定义进行注释来实现的)。 我在activemq的文档中找不到任何类似的东西,我找到的最接近的就是这个 consumer.recvDelay 0 ms Pause consumer for recvDelay milliseconds with each message (allows consumer throttling). 来自: http : //activemq.apache.org/activemq-performance-module-users-manual.html 但在那里我找不到我如何在java中做到这一点。 提前致谢, 问候。 编辑:这是ActiveMQManager代码和消费者代码: public class ActiveMQManager { private static ActiveMQConnectionFactory CONNECTION_FACTORY; public static Connection CONNECTION; public static Session SESSION; public static Destination TEST_QUEUE; public static void start() { try { CONNECTION_FACTORY = new […]

ActiveMQ JMS ping

Apache Activemq 5.2.0 我的应用程序侦听有关三个主题的消息,并发送有关两个主题的消息。 当我的应用程序是“webping”时,我想检查这些主题是否还活着。 我想知道这是否可行。 以下是我的观察, 咨询消息可用于此,但它们仅在生产者/消费者加入时发送消息。 这不是我想要的。 我只想检查是否可以向出站主题发送消息,并且可以接收有关入站主题的消息。 自定义心跳解决方案。 我可以让每个生产者发送一个心跳消息说每5秒钟,并且监听器不处理心跳消息但更新标志/时间戳。 这样我就知道这个话题正在运行。 在Apache ActiveMQ中是否有内置的心跳? 或者“ping一个主题”? 我理解JMS不是用于监控,但如果我是一个主题的制作人,那么知道我是否能以合理的舒适程度制作主题将会很好。 我也同意ping和消息,频道可以关闭,这对我来说是一个可接受的失败。 我只想要一个健康检查系统/页面,可以说“是的主题在那里,而activemq正在运行”

获取ActiveMQ中的队列名称列表

我试过下面的代码来获取ActiveMQ中的队列列表。 但它不起作用。 我的ActiveMQ中有4个队列。 try { ActiveMQConnection.makeConnection(URL).start(); Set allque= ActiveMQConnection.makeConnection().getDestinationSource().getQueues(); Iterator itr= allque.iterator(); while(itr.hasNext()){ ActiveMQQueue q= itr.next(); System.out.println(q.getQueueName()); } } catch (Exception e) { e.printStackTrace(); } 请告诉我代码中的任何更正或一些新代码都可以完成。

ActiveMQ:’通道长时间处于非活动状态’exception会停止代理消息传递

我的系统有以下几个部分: ActiveMQ代理暴露在tcp,端口61616上 3 Grails / Spring战争存在于他们自己的Tomcat服务器中,他们向JMS代理发布和使用消息 n次使用JMS侦听器组件的远程客户端系统接收客户端特定的消息,使用主机名和端口61616通过VPN连接到JMS代理 到目前为止,所有在开发,测试和生产环境中都能正常工作。 我们刚刚在生产中连接了一个新的客户端系统,我们注意到它的日志开始报告“通道长时间处于非活动状态”exception并丢弃了连接。 担心这个客户端的整体效果是它会停止代理上的所有消息消耗,从而导致整个系统停止运行。 此客户端侦听器(使用Spring缓存连接工厂)似乎连接到JMS代理确定,处理一些消息,然后3分钟报告exception。 在ActiveMQ中启用了DEBUG并获得了大量输出,但是在同一时间没有任何迹象表明代理上有警告或错误。 相信ActiveMQ有一些内部保持活动,即使在非活动时间超过默认的30秒也应保持连接。 基础设施人员监控了该客户端的VPN,并确认它始终保持连接状态。 不要相信它是错误的代码或Spring配置,因为我们在不同的客户端中有许多其他的监听器实例,并且它们都表现得很好。 假设我真的有两个问题: 是什么导致“频道不活跃”例外? 为什么单个客户端中的此exception会阻止ActiveMQ工作? 编辑 – 添加exception堆栈跟踪: 2013-04-24 14:02:06,359 WARN – Encountered a JMSException – resetting the underlying JMS Connection (org.springframework.jms.connection.CachingConnectionFactory) javax.jms.JMSException: Channel was inactive for too (>30000) long: jmsserver/xxx.xx.xx.xxx:61616 at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49) at org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1833) at org.apache.activemq.ActiveMQConnection.onException(ActiveMQConnection.java:1850) at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:101) at org.apache.activemq.transport.ResponseCorrelator.onException(ResponseCorrelator.java:126) at […]

ActiveMQInitialContextFactory与NamingContextFactory

我正在创建一个java企业应用程序,它使用activemq将消息发送到独立的队列代理。 我目前通过jndi查找维护对长期资源的访问,这非常有效。 我想继续使用ActiveMQ连接工厂和队列连接工厂的这种模式,但是在amq文档中它指定我的jndi.properties应该具有: java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory 而默认的jndi.properties(适用于我的简单对象和外观查找具有: java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory 我可以和另一个一起使用吗? 我能以某种方式拥有两个jndi.properties文件或两个初始上下文吗? 此问题显示如何通过jndi配置activemq。 我希望他们能很好地一起玩。

是否可以在远程代理上获取队列列表?

我正在试图找出如何在远程代理上获取现有队列的列表。 看起来我可以通过添加咨询消息(我还没有工作)来创建/销毁它们来侦听队列,但我需要在启动时获得所有现有队列。 看起来我可以用getDestinationMap做到这一点: http://activemq.apache.org/maven/apidocs/org/apache/activemq/broker/region/Region.html#getDestinationMap() 但这似乎只能从嵌入式和进程中的代理调用。 我的意思是……我愿意走这条路,但似乎更有意义的是为activemq设置正常的init / daemon,然后让远程进程像普通的JMS使用者一样连接到它。 该文档似乎暗示它是可能的: http://activemq.apache.org/how-can-i-see-what-destinations-are-used.html 但这是通过使用Region对象而且只有在与activemq位于同一JVM中时才有可能。

获取ActiveMQ的队列长度的任何简单方法?

如何使用Java获取ActiveMQ中的队列长度(发送到队列的未消耗消息的数量)?

通过JNDI使用ActiveMQ

我正在尝试使用JNDI创建与ActiveMQ的简单连接。 我有 队列名为’example.A’。 根据触及JNDI的ActiveMQ文档 ,如果我想通过JNDI使用ConectionFactories和Queues(Topics),我必须在我的类路径上放置jndi.properties文件。 据我所知,默认情况下,activeMQ类路径是%activemq%/ conf目录。 我没有改变它。 所以我的队列有这个属性: queue.MyQueue = example.A 我为ActiveMQ创建了java客户端类,它使用JNDI如下: Properties jndiParameters = new Properties() ; jndiParameters.put(Context.INITIAL_CONTEXT_FACTORY, “org.apache.activemq.jndi.ActiveMQInitialContextFactory”); jndiParameters.put(Context.PROVIDER_URL, “tcp://localhost:61616”); Context context = new InitialContext(jndiParameters); ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup(“ConnectionFactory”); Queue queue = (Queue) context.lookup(“MyQueue”); 但它找不到我的队列,它抛出exception:javax.naming.NameNotFoundException:MyQueue 我的错误在哪里?