jms连接到没有任何特定库的队列

brtdzjyr  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(310)

我想创建一个类,该类使用amqp协议(比如activemq或rabbitmq)将消息发送到消息传递队列,但不包括那些mq提供者的任何特定jar/文件/库。
我在网上看到的每个例子都使用上述技术之一。我以为我可以严格使用jms连接到队列?如何将消息传递技术与producer/consumer类解耦,以便在不重新编译代码的情况下使用rabbitmq切换出activemq?这有可能吗?
/沮丧@7:00 pm:(
谢谢!

rdrgkggo

rdrgkggo1#

您可以尝试swiftmq amqp 1.0 java客户端http://www.swiftmq.com/products/router/swiftlets/sys_amqp/client/index.html

smdncfj3

smdncfj32#

看看这个:实现独立于供应商的jms解决方案。披露:我不久前写的,但我想你会发现它从jms的Angular 解决了你的问题。
更新:ibm删除了这个页面,下面是一个保存在archive.org上的快照,它实现了独立于供应商的jms解决方案

j91ykkif

j91ykkif3#

是的,这是可能的。您要做的是确保代码中没有引用任何activemq对象。
然后需要创建工厂方法来获取activemq/rabbitmq方法。
像这样的

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

遗憾的是,您将遇到的困难是,每个提供程序的初始化代码略有不同。所以你需要支持每一个人。
您可以通过反射来完成这一切,但是helper类可能更好。

相关问题