我想创建一个类,该类使用amqp协议(比如activemq或rabbitmq)将消息发送到消息传递队列,但不包括那些mq提供者的任何特定jar/文件/库。我在网上看到的每个例子都使用上述技术之一。我以为我可以严格使用jms连接到队列?如何将消息传递技术与producer/consumer类解耦,以便在不重新编译代码的情况下使用rabbitmq切换出activemq?这有可能吗?/沮丧@7:00 pm:(谢谢!
rdrgkggo1#
您可以尝试swiftmq amqp 1.0 java客户端http://www.swiftmq.com/products/router/swiftlets/sys_amqp/client/index.html
smdncfj32#
看看这个:实现独立于供应商的jms解决方案。披露:我不久前写的,但我想你会发现它从jms的Angular 解决了你的问题。更新:ibm删除了这个页面,下面是一个保存在archive.org上的快照,它实现了独立于供应商的jms解决方案
j91ykkif3#
是的,这是可能的。您要做的是确保代码中没有引用任何activemq对象。然后需要创建工厂方法来获取activemq/rabbitmq方法。像这样的
public ConnectionFactory getConnectionFactory() throws IllegalAccessException, InstantiationException { Class<?> klass = Class.forName(System.getProperty("JMSConnectionFactory"); return (ConnectionFactory)klass.newInstance(); }
遗憾的是,您将遇到的困难是,每个提供程序的初始化代码略有不同。所以你需要支持每一个人。您可以通过反射来完成这一切,但是helper类可能更好。
3条答案
按热度按时间rdrgkggo1#
您可以尝试swiftmq amqp 1.0 java客户端http://www.swiftmq.com/products/router/swiftlets/sys_amqp/client/index.html
smdncfj32#
看看这个:实现独立于供应商的jms解决方案。披露:我不久前写的,但我想你会发现它从jms的Angular 解决了你的问题。
更新:ibm删除了这个页面,下面是一个保存在archive.org上的快照,它实现了独立于供应商的jms解决方案
j91ykkif3#
是的,这是可能的。您要做的是确保代码中没有引用任何activemq对象。
然后需要创建工厂方法来获取activemq/rabbitmq方法。
像这样的
遗憾的是,您将遇到的困难是,每个提供程序的初始化代码略有不同。所以你需要支持每一个人。
您可以通过反射来完成这一切,但是helper类可能更好。