activeMQ-传输协议

ActiveMQ支持的client-broker:

Transmission Control Protocol (TCP)

这是默认的Broker配置,TCP的Client监听端口是61616。

在网络传输数据前,必须要序列化数据,消息是通过一个叫wire protocol的来序列化成字节流。目的是促使网络上的效率和数据快速交互。

TCP连接的URI形式:tcp://hostname:port?key=value&key=value,加粗部分是必须的

TCP协议传输可靠性高,稳定性强,支持任何平台

New I/O API Protocol

NIO协议和TCP协议类似,但NIO更侧重于底层的访问操作。它允许开发人员对同一资源可有更多的client调用和服务端有更多的负载。

适合使用NIO协议的场景:
(1) 可能有大量的Client去链接到Broker上
一般情况下,大量的Client去链接Broker是被操作系统的线程数所限制的。因此, NIO的实现比TCP需要更少的线程去运行,所以建议使用NIO协议
(2)可能对于Broker有一个很迟钝的网络传输 NIO比TCP提供更好的性能

NIO连接的URI形式:nio://hostname:port?key=value
Transport Connector配置示例:

<transportConnectors>
   <transportConnector name="tcp"
        uri="tcp://localhost:61616?trace=true" />      <transportConnector
name="nio"
uri="nio://localhost:61618?trace=true" /> </transportConnectors>
User Datagram Protocol(UDP)

UDP仅仅是一个链接协议,所以它没有可靠性之说

TCP是被用在稳定可靠的场景中使用的;UDP通常用在快速数据传递和不怕数据丢失的场景中,还有ActiveMQ通过防火墙时,只能用UDP

UDP连接的URI形式:udp://hostname:port?key=value

<transportConnectors>
   <transportConnector
         name="udp"
uri="udp://localhost:61618?trace=true" /> </transportConnectors>
Secure Sockets Layer Protocol (SSL)

连接的URI形式:ssl://hostname:port?key=value

Transport Connector配置示例:

<transportConnectors>
   <transportConnector name="ssl"     uri="ssl://localhost:61617?trace=true"/>
</transportConnectors>
VM Protocol(VM)

VM transport允许在VM内部通信,从而避免了网络传输的开销。这时候采用的连接不是socket连接,而是直接的方法调用。

第一个创建VM连接的客户会启动一个embed VM broker,接下来所有使用相同的broker name的VM连接都会使用这个broker。当这个broker上所有的连接都关闭的时候,这个broker也会自动关闭。

连接的URI形式:vm://brokerName?key=value

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ActiveMQ 支持传输 JSON 数据。你可以使用 JMS Message 类型为 TextMessage,然后将 JSON 数据作为文本发送。 下面是一个简单的例子: ```java // 创建 ActiveMQ 连接工厂 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616"); // 创建连接 Connection connection = connectionFactory.createConnection(); connection.start(); // 创建会话 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // 创建消息队列 Destination destination = session.createQueue("myQueue"); // 创建消息生产者 MessageProducer producer = session.createProducer(destination); // 创建 JSON 数据 JSONObject jsonObject = new JSONObject(); jsonObject.put("name", "John"); jsonObject.put("age", 30); String json = jsonObject.toString(); // 创建文本消息 TextMessage message = session.createTextMessage(json); // 发送消息 producer.send(message); // 关闭连接 connection.close(); ``` 这个例子将创建一个 ActiveMQ 连接,发送包含 JSON 数据的文本消息到名为 `myQueue` 的消息队列中。 ### 回答2: ActiveMQ是一个开源的消息中间件,它提供了高效可靠的消息传递机制。在ActiveMQ中传输JSON数据是非常常见的场景。 首先,我们需要创建一个ActiveMQ Broker实例,该实例负责接收和分发消息。可以使用ActiveMQ提供的默认配置文件进行配置,并通过命令行启动Broker。 然后,我们需要创建一个消息生产者,这个生产者负责将JSON数据封装成消息并发送到ActiveMQ Broker中。我们可以使用ActiveMQ提供的Java客户端API来实现。首先,我们创建一个连接工厂,然后创建一个连接,接着创建一个会话,并指定要发送的消息队列。最后,我们创建一个消息,并将JSON数据作为消息内容发送。 在接收端,我们需要创建一个消息消费者来接收从ActiveMQ Broker中发送过来的消息。同样地,我们可以使用ActiveMQ提供的Java客户端API来实现。首先,我们创建一个连接工厂,然后创建一个连接,接着创建一个会话,并指定要接收消息的消息队列。最后,我们创建一个消息监听器,并在监听器中处理接收到的JSON数据。 在消息的传输过程中,ActiveMQ会负责将JSON数据进行序列化和反序列化,以确保数据的完整性和可靠性。当消息发送到ActiveMQ Broker时,它会存储在消息队列中,并根据预设的路由策略将消息发送给消息消费者。 总之,ActiveMQ是一个非常强大和灵活的消息中间件,可以很方便地用于传输JSON数据。通过使用ActiveMQ提供的Java客户端API,我们可以轻松地实现消息的发送和接收,并保证数据的完整性和可靠性。 ### 回答3: ActiveMQ是一种流行的开源消息中间件,它支持多种协议和传输格式,包括传输JSON数据。 在ActiveMQ中使用JSON进行消息传输有几种方式。一种常见的方式是将JSON数据封装在消息体中进行传输。发送方将JSON对象转换为字符串,并将其设置为消息的内容,然后通过ActiveMQ发送消息。接收方通过从消息中获取内容并将其解析为JSON对象来接收消息。 另一种方式是使用ActiveMQ的对象消息功能,它允许直接将JSON对象作为消息的内容进行传输。发送方将JSON对象通过ActiveMQ的对象消息接口发送消息,接收方则可以直接接收到JSON对象。 使用JSON进行消息传输具有许多优点。首先,JSON是一种轻量级的数据交换格式,易于理解和解析。其次,JSON格式比较紧凑,可以减少传输数据的大小,提高传输效率。此外,JSON支持多种编程语言,使得跨平台和跨语言的消息传输更加方便和灵活。 总之,ActiveMQ可以轻松地支持JSON数据的传输。借助ActiveMQ的强大功能,开发人员可以方便地将JSON数据封装在消息中进行传输,并能够实现灵活的消息通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值