Tag: message queue

在Windows上 – 我可以在哪里使用mqji.properties?

我的应用程序是一个独立的Java应用程序,客户可以下载,安装和运行。 它使用MQ与已经工作多年的主机进行通信。 我自己和客户都没有在他们的Windows机器上安装任何MQ; 我们包括并使用com.ibm.mq.jar来完成这项工作。 显然,MQ需要在类路径中使用mqji.properties文件来防止这种情况: Unable to load message catalog – mqji com.ibm.mq.MQException: Message catalog not found 所以我的问题是:我从哪里得到一个?

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的性能? 谢谢。

按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(); } […]

计算JMS队列中的消息数

查看JMS队列并获取其中的所有消息的最佳方法是什么? 如何计算队列中的消息数? 谢谢。

RabbitMQ:消息仍为“未确认”

我的Java应用程序向RabbitMQ交换发送消息,然后交换重定向消息到绑定队列。 我在RabbitMQ中使用Springframework AMQP java插件。 问题:消息进入队列,但它保持“未确认”状态,它永远不会变为“就绪”。 可能是什么原因?

JMS性能

从性能角度理解JMS我遇到了一些麻烦。 我们在应用程序中有这么简单的代码: QueueConnection connection = null; QueueSession session = null; QueueSender sender = null; TextMessage msg = null; try { // The JNDIHelper uses InitialContext to look up things QueueConnectionFactory qcf = JNDIHelper.lookupFactory(); Queue destQueue = JNDIHelper.lookupQueue(); // These objects are created for every message, which is quite slow connection = qcf.createQueueConnection(); session = connection.createQueueSession(false, […]

没有连接的AMQP / RabbitMQ通道何时死亡?

我有一个简单的RabbitMQ测试程序随机排队消息,另一个读取它们,都使用Spring-AMQP。 如果消费者死亡(例如,在没有机会关闭其连接或通道的情况下终止进程),则任何未确认的消息似乎永远不会被确认。 我已经看到了许多引用(例如这个问题 ),它表示当通道没有连接时它会死亡,并且将重新传送剩余的未包装的消息。 这不是我看到的行为 – 相反,我得到了一个越​​来越多的标记为IDLE的频道列表,以及越来越多的标记正在运行但没有活动的连接列表。 一旦进程被杀死,是否需要一些配置来注意连接已经死亡? 编辑:我在VirtualBox VM中运行rabbitmq服务器,显然无法通过NAT正确管理死入站连接。 这对于直接在物理主机上运行的mq服务器来说效果很好。

卡夫卡:不能创建多个流消费者

我刚刚起步并运行Kafka 0.8 beta 1.我有一个非常简单的示例启动和运行,问题是,我只能让一个消息消费者工作,而不是几个。 也就是说,runSingleWorker()方法工作。 run()方法不起作用: import kafka.consumer.ConsumerIterator; import kafka.consumer.KafkaStream; import kafka.consumer.ConsumerConfig; import kafka.javaapi.consumer.ConsumerConnector; import java.util.Map; import java.util.List; import java.util.HashMap; import java.util.concurrent.Executors; import java.util.concurrent.ExecutorService; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import com.truecar.inventory.worker.core.application.config.AppConfig; public class ConsumerThreadPool { private final ConsumerConnector consumer; private final String topic; private ExecutorService executor; private static ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); public ConsumerThreadPool(String topic) […]

模拟或模拟消息队列(JMS)

有一条消息(文本),我确定知道哪种格式和内容。 目前,实现了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. 关于这个规范,我需要JMS提供者 。 JMS客户端 – 这是我读取消息的类。 消息本身我知道。 那么问题是如何启动消息队列? 我如何从Java代码中以programmaticaly方式模拟它? 我能以某种方式嘲笑它吗? 谢谢。

避免apache kafka使用者中重复消息的有效策略

我一直在学习apache kafka一个月了。 然而,我现在陷入了困境。 我的用例是,我有两个或更多的消费者进程在不同的机器上运行。 我运行了一些测试,其中我在kafka服务器上发布了10,000条消息。 然后在处理这些消息时,我杀死了一个消费者进程并重新启动它。 消费者在文件中编写已处理的消息。 消费完成后,文件显示超过10k条消息。 所以有些消息是重复的。 在消费者流程中,我已禁用自动提交。 消费者手动批量提交偏移。 因此,例如,如果将100条消息写入文件,则消费者提交偏移量。 当单个消费者进程正在运行并且以这种方式避免崩溃并恢复重复时。 但是当多个消费者正在运行并且其中一个消失并且恢复时,它会将重复的消息写入文件。 是否有任何有效的策略来避免这些重复的消息?