ActiveMQ,使用amqp协议的问题,求帮助

jack_jones 发布于 2014/03/31 17:39
阅读 1K+
收藏 0

看activemq的配置文档:

        <transportConnectors>
            <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
            <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        </transportConnectors>

里面是5种协议,三个问题

1、怎么指定我要使用哪种协议?

2、指定协议的意义何在?什么情况下使用哪种协议?怎么选?

3、如果我使用amqp协议,怎么和其它mq产品(也用amqp协议)一起使用?

加载中
0
震秦
震秦


1. 指定使用那种协议。如我用Spring的

<bean id="activeMQJmsFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
        <property name="brokerURL">
            <value>tcp://192.168.1.115:61616</value>
        </property>
        <property name="useAsyncSend" value="false" />
        <property name="alwaysSyncSend" value="false" />
    </bean>



2,如果是纯Java开发,建议 openwire也就可以了。openwire是Java的序列化方式,其它语言无法支持。 amqp和stomp都多语言支持的,Java,Python都能混搭,消息相互通用。

ws是现在浏览器WebSocket链接的。其它的协议我也不晓得,自己Google吧

3, MQ就是一个消息服务中间件,使用AMQP协议的程序可以在多个中间件之间移植。如RabbitMQ‎。每个中间件效率各异,LZ还是自己测试自己发现吧


0
kimmking
kimmking

1、客户端使用什么协议连broker,你就暴露什么协议。最小化原则。

2、指定协议是为了支持更多的方式来处理消息。

3、可以用camel、spring integration之类的EIP框架来实现互通,例如(http://blog.csdn.net/kimmking/article/details/24427383)。其实这种互通跟AMQP协议本身关系不大。AMQP协议标榜的不同实现之间的互操作,说的是A实现的client和B实现的broker,目前看来这个也是没有做到的。

返回顶部
顶部