Tag: activemq

JMS和ThreadPool有问题吗?

我希望当一个线程处理完一条消息(threadPool提交一个可调用的)时,jms会收到一条消息。 消息由主线程接收。 以下哪种方式更好: 我使用spring 3.0.5: ApplicationContext context = new ClassPathXmlApplicationContext( “application-context.xml”); jmsTemplate = (JmsTemplate) context.getBean(“jmsTemplate”); destination = (Destination) context.getBean(“destination”); _log4j.debug(“ThreadSize in xml\t” + appConfig.getThumbCreatorThreadSize()); 在主线程中方式1: while (countFlag < 0) { try { TextMessage msg = (TextMessage) jmsTemplate .receive(destination); // prehandle ,then give to sub workers. if (msg != null) { _log4j.debug("JMSMessageID:\t" + msg.getJMSMessageID() + "\t" […]

如何在Activemq中回滚消息

我想在变量x值等于1时向Activemq发送确认。如果它不等于1 ,我想将消息重新发送到Activemq 。 然后只有Activemq再次向订阅者传递消息。为此,我编写了以下程序。 MessageConsumer.java: public class Consumer extends HttpServlet { @Override protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { try { ActiveMQConnectionFactory connectionFactory=new ActiveMQConnectionFactory(“admin”,”admin”,”tcp://localhost:61617″); RedeliveryPolicy policy = new RedeliveryPolicy(); policy.setInitialRedeliveryDelay(1000L); policy.setMaximumRedeliveries(RedeliveryPolicy.NO_MAXIMUM_REDELIVERIES); connectionFactory.setRedeliveryPolicy(policy); connectionFactory.setUseRetroactiveConsumer(true); Connection connection=connectionFactory.createConnection(); final Session session=connection.createSession(true, Session.AUTO_ACKNOWLEDGE); Topic queue=session.createTopic(“MessageTesting”); javax.jms.MessageConsumer consumer=session.createConsumer(queue); //anonymous class MessageListener listener = new MessageListener() { @Override […]

ActiveMQ在不同操作系统中的性能

我在某些操作系统中测试了activeMQ JMSProducer。 结果如下: AIX – Persistent – around 50 messages per second Solaris – Persistent – around 60 messages per second Linux – Persistent – around 500 messages per second 这是正常的行为,因为在Linux中,速度要快得多吗? ActiveMQ Performance文档仅基于Linux。 并且, Slow KahaDB access降低activeMQ的性能? 谢谢。

ActiveMQ没有持久性

我想在生成消息的服务器和接收消息的许多客户端之间建立基于发布者 – 订户的通信协议。 经过一番研究,我决定选择ActiveMQ。 我查看了一些教程和ActiveMQ站点,并按如下方式设置了代理: BrokerService broker = new BrokerService(); broker.setPersistent(false); broker.addConnector(“tcp://localhost:61616”); broker.start(); 我只需要消息传递function,没有数据库持久性或类似的东西。 但是,当我启动应用程序时,无论配置如何,都会创建activemq-data文件夹。 这反过来会在下次启动代理时导致exception。 SEVERE: Failed to start ActiveMQ JMS Message Broker. Reason: java.io.EOFException: Chunk stream does not exist at page: 0 这是一个错误还是我没有正确设置代理(使用ActiveMQ 5.4.1)? 如何禁用持久性,因此不会创建额外的数据存储? 此外,我更喜欢从Java应用程序中配置代理,而不是通过xml文件。 干杯,马克斯

Active PooledConnectionFactory池连接与会话

我正在寻找在Tomcat应用程序中使用PooledConnectionFactory,在Tomcat POST处理程序中,我想将消息放入队列中以供单个远程消费者选取。 AMQ汇集了Connection和Session对象,我试图了解何时应该使用其中一个。 我正在考虑的方法是使用单个Connection并设置MaximumActiveSessionPerConnection以匹配我的Tomcat线程,POST处理程序将从连接借用并返回Sessions。 这听起来是否合理,或者汇集连接是否有优势? 如果重要,我不会使用Spring或其他Web应用程序框架,只使用Tomcat。 我在AMQ中将消息保存到磁盘。

我应该何时关闭在无状态会话bean中创建的JMS连接?

我有一个关于何时关闭在无状态会话bean(EJB)中创建的连接的一般性问题。 连接到ActiveMQ,它们是在bean的构造函数中创建的。 然后在一个方法中使用该连接,我想知道何时关闭此连接的适当时间/地点。 有一个单独的方法来关闭连接,是否必须由类使用bean调用? 或者我应该只使用它关闭方法内的连接? 我担心我可能会关闭连接然后重新使用该bean与现在关闭的连接,因为连接在构造函数中打开。 这是一些代码: @Stateless @LocalBean public class SendEventsBean { private static String brokerURL = “…….”; private static transient ConnectionFactory factory; private transient Connection connection; private transient Session session; private transient MessageProducer producer; public SendEventsBean() { factory = new ActiveMQConnectionFactory(brokerURL); try { connection = factory.createConnection(); connection.start(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); producer = […]

是否有可能为单个队列设置死信队列

我目前在我的ActiveMQ服务器中有一个名为hello.world的Queue。 每当消息无法处理时,ActiveMQ都会创建一个名为ActiveMQ.DLQ的默认目录。 是否可以将该名称更改为hello.world.DLQ ? 原因是我将来可能有几个队列,我希望它像.DLQ

按Jms ID选择消息的语法

根据相应的JMS ID选择消息的正确语法是什么? 目前我使用: String selector = “JMSMessageID=’ID:305:1:5:1:1′”; messageConsumer = session.createConsumer(getRetryQueue(), selector); 上面的语法适用于模拟代理的测试。 但是对于ActiveMQ,消息不会被轮询。 原始代码: @Override public Message readMessageFromRetryQueueByJmsId(String jmsId) throws QueueingException { Connection connection = null; Session session = null; MessageConsumer messageConsumer = null; Message message = null; try { connection = getConnectionFactory().createConnection(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); messageConsumer = session.createConsumer(getRetryQueue(), “JMSMessageID='”+jmsId+”‘”); message = messageConsumer.receiveNoWait(); } […]

我将如何向Activemq发送消息

我从不在JMS工作。 最近我在所有conf/activemq-*.xml文件中下载了Activemq并将端口号从61616更改为61617.I从命令提示符运行以下命令并在浏览器上打开控制台页面。 C:\Users\Infratab Bangalore\Desktop\Queueing\apache-activemq-5.8.0\bin>activemq 现在我想使用JMS将消息从java代码发送到Activemq 。为此,我编写了以下代码。 并使用Apache Tomcat server.it运行我的代码 此代码在Eclipse中实现。 package PackageName; import java.io.IOException; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Queue; import javax.jms.Session; import javax.jms.TextMessage; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.activemq.ActiveMQConnectionFactory; public class MessageProducer extends HttpServlet { @Override protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { try { //created ConnectionFactory […]

spring配置嵌入式BrokerService

我想在spring mvc应用程序中配置嵌入式ActiveMQ代理服务。 这是我的配置 @Configuration @EnableJms public class JmsConfiguration { @Bean(initMethod = “start”, destroyMethod = “stop”) public BrokerService brokerService() throws Exception { BrokerService brokerService = new BrokerService(); brokerService.setPersistent(false); brokerService.setUseJmx(false); brokerService.addConnector(“vm://localhost:0”); brokerService.setBrokerName(“broker”); brokerService.setUseShutdownHook(false); return brokerService; } @Bean public ConnectionFactory connectionFactory(){ return new ActiveMQConnectionFactory(“vm://localhost:0”); } @Bean public ActiveMQQueue defaultDestination(){ return new ActiveMQQueue(“broker”); } @Bean public JmsTemplate jmsTemplate(){ JmsTemplate […]