2015-12-14 13 views
5

संदेश दलालों के साथ काम करने के अपने अनुभव के अनुसार, खरगोश एमक भारी भार के तहत बेहतर प्रदर्शन करता है। हालांकि, सादगी के लिए, ब्राउज़र में AtiveMQ का उपयोग करना बेहतर है। मैं जानना चाहता हूं कि दोनों एक साथ उपयोग करना संभव है या नहीं?
इसके अलावा, क्या ब्राउज़र में ActiveMQ का उपयोग करके संदेश भेजने का कोई तरीका है और सर्वर पक्ष में RabbitMQ का उपयोग करके एक ही संदेश प्राप्त होता है? यदि कोई मुझे एक उपयोगी नमूना कोड सुझाता है तो मैं सराहना करूंगा।सक्रिय एमक्यू और खरगोश एमक्यू का प्रयोग एक साथ

+1

एक 'service' कि' ActiveMQ' से पढ़ता है और 'RabbitMQ' को लिखते हैं बनाने के ... मैं सही नहीं हो सकता? – nafas

+4

"ब्राउज़र में" से आपका क्या मतलब है? आप ब्राउज़र में ActiveMQ नहीं चलाते हैं। – nos

+0

@nafas मुझे इसे एक उदाहरण से अधिक स्पष्ट रूप से समझाएं। कभी-कभी मेरी परियोजना में मुझे ब्राउज़र में एक संदेश भेजने या प्राप्त करने की आवश्यकता होती है। इसलिए, मेरे लिए ActiveMQ का उपयोग अजाक्स द्वारा संदेश ब्रोकर के रूप में करना बेहतर है जो ActiveMQ द्वारा समर्थित है। लेकिन जब प्रति सेकंड 5000 से अधिक लेनदेन के साथ प्रक्रियाओं की बात आती है, तो खरगोश एमक्यू में बेहतर प्रदर्शन होता है। नतीजतन, मुझे एक ही समय में दोनों का उपयोग करने की आवश्यकता है। अब, मैं जानना चाहता हूं कि मेरे प्रोजेक्ट में दोनों का उपयोग करना संभव है या नहीं। इसके अलावा, क्या मुझे सर्वर में RabbitMQ के साथ एक संदेश भेजने और ब्राउज़र में ActiveMQ द्वारा प्राप्त करने की कोई संभावना है। –

उत्तर

1

ActiveMQ AMQP 1.0 बोल सकता है, RabbitMQ इस plug-in का उपयोग करके AMQP 1.0 बोल सकता है। आप इस प्रोटोकॉल का उपयोग कर पुल बना सकते हैं।

लेकिन अपने प्रश्न को पढ़ते हुए, मुझे लगता है कि आपको ActiveMQ की आवश्यकता नहीं है। ब्राउज़र को संदेश भेजने के लिए आप webstomp plugin का उपयोग कर सकते हैं।

+1

>> अगर कोई मुझे एक उपयोगी नमूना कोड सुझाता है तो मैं सराहना करूंगा। << आपका उत्तर बहुत उपयोगी नहीं है। – AdamSkywalker

+0

आप किस प्रकार का कोड ढूंढ रहे हैं? 'amqp' के साथ आप एक पुल भेज/प्राप्त कर सकते हैं। 'stomp' के साथ आप 'JS' का उपयोग करके संदेश भेज और प्राप्त कर सकते हैं। – Gabriele

+0

पुल कार्यान्वयन के बारे में कोई उदाहरण या सुझाव। मैंने खरगोश के साथ काम किया और अभी भी कुछ भी कल्पना नहीं कर सकता, लेकिन एक जावा क्लाइंट जो संदेशों को दोबारा प्रेषित करेगा। (यद्यपि अक्षम है) – AdamSkywalker

1

जो आप करने की कोशिश कर रहे हैं वह एक पुल पैटर्न लागू करना है। अब हालांकि जेएमएस पुल आमतौर पर थे जो जेएमएस संदेश प्रदाताओं के बीच एक तंत्र प्रदान करने के लिए बनाए गए थे, एकीकरण पैटर्न वायर प्रोटोकॉल के लिए भी इस्तेमाल किया जा सकता है।

तो अगर आप ActiveMQ के बीच संदेश भेजने के लिए कोशिश कर रहे हैं - RabbitMQ यहां संभावित विकल्पों है:

1) ActiveMQ - वास्तविक JMS समर्थन, AMQP, STOMP भी समर्थित है 2) RabbitMQ - वास्तविक STOMP समर्थन, AMQP है भी MQTT जैसे अन्य लोकप्रिय तार प्रोटोकॉल के साथ समर्थित

तो जब यह पूरा करने के लिए विकल्पों की बात आती है:

एक) [1] JMS - [2] STOMP (या) AMQP ख) [1] AMQP (या) STOMP - [2] AMQP (या) STOMP

1'st और 2 ब्रिज विकल्पों के मामले में, अपाचे क्यूपीआईडी ​​क्लाइंट का उपयोग करके कार्यान्वित करने का सबसे आसान तरीका है।

वैकल्पिक रूप से सबसे मजबूत कॉन्फ़िगरेशन के लिए, स्प्रिंग इंटीग्रेशन चैनल या कैमल रूट के रूप में कार्यान्वित करना बेहतर है।

<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

संबंधित मुद्दे