2015-12-14 7 views
5

メッセージブローカーを使った私の経験によると、RabbitMqは負荷が重いほど優れたパフォーマンスを示します。ただし、簡単にするために、ブラウザでAtiveMQを使用する方がよいでしょう。私はそれが同時に両方を使用することが可能かどうかを知りたいですか?
さらに、ブラウザでActiveMQを使用してメッセージを送信し、サーバー側でRabbitMQを使用して同じメッセージを受信する方法はありますか? 有用なサンプルコードがあれば、私は感謝します。ActiveMQとRabbitMQを同時に使用する

+1

'ActiveMQ'から読み込み、RabbitMQ''への書き込み 'service'を作成します...私は厳しいことができないのですか? – nafas

+4

「ブラウザで」とはどういう意味ですか?あなたはブラウザでActiveMQを実行しません。 – nos

+0

@nafas例でより明確に説明しましょう。私のプロジェクトでは、ブラウザでメッセージを送受信する必要があります。ですから、ActiveMQでサポートされているAjaxのメッセージブローカーとしてActiveMQを使用する方が良いでしょう。しかし、毎秒5000トランザクション以上の処理を行うプロセスでは、RabbitMQの方がパフォーマンスが優れています。したがって、私は同時に両方を使用する必要があります。さて、私はそれが私のプロジェクトで両方を使用することが可能かどうかを知りたいです。また、RabbitMQでサーバにメッセージを送信し、ブラウザでActiveMQで受信する可能性はありますか? –

答えて

1

ActiveMQはAMQP 1.0を話すことができ、RabbitMQはplug-inを使用してAMQP 1.0を話すことができます。 このプロトコルを使用してブリッジを作成できます。

あなたの質問を読んで、私はあなたがActiveMQを必要としないと思う。 ブラウザにメッセージを送信するには、webstomp pluginを使用してください。

+1

>>有益なサンプルコードがあれば、感謝します。 <<あなたの答えはそれほど役に立ちません。 – AdamSkywalker

+0

あなたはどんなコードを探していますか? を 'amqp'と組み合わせると、ブリッジ送受信を作成できます。 'stomp'では' JS'を使ってメッセージを送受信できます。 – Gabriele

+0

ブリッジの実装に関する例やヒント。私はrabbitmqで作業していましたが、何も想像することはできませんが、メッセージを再送信するJavaクライアントです。 (しかし、非効率的な感じ) – AdamSkywalker

1

ブリッジパターンを実装しようとしています。現在、JMSブリッジは通常、JMSメッセージプロバイダ間でメカニズムを提供するために作成された でしたが、統合パターンはワイヤプロトコルにも使用できます。だから、

あなたはActiveMQの間でメッセージを送信しようとしている場合 - RabbitMQのここでの潜在的なオプションです:

1)ActiveMQの - デファクトJMSサポートは、AMQP、STOMPも 2をサポートされている)のRabbitMQ - デファクトSTOMPサポート、AMQPは、また、MQTTのような他の人気のワイヤプロトコルと一緒にサポート

だから、ブリッジングオプションに来るとき:

A)[1] JMS - [2] STOMP(または)AMQP B)[1] AMQP(または)STOMP - [2] AMQP(または)STOMP

1番目と2番目のブリッジオプションの場合、実装する最も簡単な方法はApache QPIDクライアントを使用する方法です。

最も堅牢な構成では、Spring Integration ChannelまたはCamel Routeとして実装する方がよいでしょう。ここで

は、春の統合でこれをacheiveする方法についての抜粋です:

<beans:bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> 
     <beans:property name="environment"> 
      <beans:props> 
       <beans:prop key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</beans:prop> 
       <beans:prop key="java.naming.provider.url">jnp://localhost:1099</beans:prop> 
       <beans:prop key="java.naming.factory.url.pkgs">org.jnp.interfaces:org.jboss.naming</beans:prop> 
      </beans:props> 
     </beans:property> 
    </beans:bean> 

    <beans:bean id="jmsQueueConnectionFactory" 
     class="org.springframework.jndi.JndiObjectFactoryBean"> 
     <beans:property name="jndiTemplate"> 
      <beans:ref bean="jndiTemplate"/> 
     </beans:property> 
     <beans:property name="jndiName"> 
      <beans:value>ConnectionFactory</beans:value> 
     </beans:property> 
    </beans:bean> 

    <!-- Channels and adapters for SI --> 

    <int-jms:message-driven-channel-adapter connection-factory="jmsQueueConnectionFactory" destination-name="myJmsQueue" channel="rabbitChannel"/> 
     <channel id="rabbitChannel"/> 
    <int-amqp:outbound-channel-adapter channel="rabbitChannel" exchange-name="fromJmsExchange" amqp-template="rabbitTemplate"/> 

    <!-- Connectivity to Rabbit --> 

    <rabbit:template id="rabbitTemplate" connection-factory="cf"/> 
    <rabbit:connection-factory id="cf" host="localhost"/> 

    <!-- Rabbit entities, to be created at context startup --> 

    <rabbit:admin connection-factory="cf"/> 
    <rabbit:queue name="fromJMS"/> 
    <rabbit:direct-exchange name="fromJmsExchange"> 
     <rabbit:bindings> 
      <rabbit:binding queue="fromJMS"/> 
     </rabbit:bindings> 
    </rabbit:direct-exchange> 

資料出所:http://integrationsphere.blogspot.co.uk/2012/03/bridging-between-jms-and-rabbitmq-amqp.html

関連する問題