java - JMS 连接到没有任何特定库的队列

标签 java jms rabbitmq activemq amqp

我想创建一个类,它使用 AMQP 协议(protocol)(​​例如 ActiveMQ 或 RabbitMQ)将消息发送到消息队列,但不包括任何特定的 jar/文件/库给那些 MQ 提供者。

我在网络上看到的每个示例都使用了上述技术之一。我以为我能够严格使用 JMS 连接到队列?我怎样才能将我的消息传递技术与我的生产者/消费者类分离,以便我可以在不重新编译代码的情况下用 RabbitMQ 切换 ActiveMQ?这可能吗?

/沮丧@ 7:00 PM :(

谢谢!

最佳答案

是的,这是可能的。您要做的是确保您没有引用任何 ActiveMQ 代码中的对象。

然后您需要创建工厂方法来获取 ActiveMQ/RabbitMQ 方法。

有点像

public ConnectionFactory getConnectionFactory() throws IllegalAccessException, InstantiationException {
    Class<?> klass = Class.forName(System.getProperty("JMSConnectionFactory");
    return (ConnectionFactory)klass.newInstance();
}

可悲的是,您将遇到的困难是每个提供商的初始化代码都略有不同。所以你需要支持每一个。

您可以通过反射来完成这一切,但辅助类可能会更好。

关于java - JMS 连接到没有任何特定库的队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16952127/

相关文章:

asynchronous - 异步 JMS 消息传递

java - 从 JMS header 获取字符串值

java - 重新排队已接受的消息

Java:查找平均线和编号线

java - Android SDK,操作栏颜色

json - JMeter/AMQ - 从 JSON 文件读取字符串时替换子字符串

java - 当消费者从rabbitmq中的 channel 获取消息时,预取消息驻留在哪里

networking - 如何将在 boot2docker 中运行的 Docker 容器连接到在另一台主机上运行的网络服务?

java - 查找给定日期中第一次出现的星期日

java - Glassfish/JMS : Does each Destinatation Resource require its own Connection Factory?