我们可以使用非java来消费JMS消息吗?

时间:2014-04-20 23:57:51

标签: java jms

我理解Java JMS API提供了对异步生成和使用消息的支持。

例如,我将使用java实现JMS生成器并将消息发送到JBOSS Message(Destination)

假设外部应用程序说分布式环境中的.net应用程序希望通过连接到JBOSS Message(Destination)来消费消息

这可能吗?

4 个答案:

答案 0 :(得分:4)

有几种JMS消息类型:

  • BytesMessage:任何人都可以阅读
  • TextMessage:ditto
  • StreamMessage:任何可以阅读网络排序原语类型的人都可以阅读
  • ObjectMessage:这些是序列化对象,只能由Java读取
  • MapMessage:这些本质上是地图;同上

JMS本身不是消息代理,只是现有代理的API。

如果您的Java代码和非Java代码可以就基于字节或文本的消息格式达成一致,则可以在它们之间交换消息。

答案 1 :(得分:1)

JMS仅定义应用程序可用于发送和接收消息的API。它没有定义有线格式。所以它取决于您使用的消息传递系统。 JBoss使用HornetQ(自JBoss 6,IIRC以来),HornetQ支持其他有线格式,即STOMPAMQP。它还允许使用REST来发送和接收消息。

但是,由于互操作性经常如此,你必须限制自己实际工作。您不能交换所有邮件正文(如EJP has elucidated),也可能不是所有邮件标题和属性。

答案 2 :(得分:0)

此刻正在阅读一本关于它的书。

您将需要一个可以通过.Net服务访问的JMS服务器(直接或因为您的JMS可以配置为将消息发送到.Net MOM *)。

在任何情况下,它都不是JMS的一部分,而是特定产品的能力。开发JMS的目的是“足够通用”以在这种情况下工作,但是由特定的服务器实现(和配置)来支持它(或不支持)。

  • MOM:面向消息的中间件

答案 3 :(得分:0)

在技术层面上,无论消息如何,都可以读取协议上的任何消息,因为它在某个时刻都被转换为0和1。但是,因为JMS是Java接口,所以即使你以这种方式读取消息,你在技术上也不会使用JMS - JMS是通过使用Java JMS接口和扩展这些接口的类来读取这些消息的java方法