2015-05-10 15 views
13

Forse sto abbaiando dall'albero sbagliato - ma ho un set di servizi (WebAPI e WCF) che usano WebSphere MQ per interagire con altri sistemi.WCF/WebService che funge da listener per il messaggio MQ?

Questo funziona senza problemi - fino a quando non ho bisogno di trovare un modo di listening per i messaggi su una delle code.

E 'possibile, o devo percorrere il percorso di servizio di Windows?

+0

Questo collegamento consente di: http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.dev.doc/q029950_.htm – Shashi

+1

@Shashi - Non posso vedere qualcosa nella documentazione su come impostare il WebSphere end per apparire come un servizio WCF? – BlueChippy

+0

Il collegamento descrive le due opzioni di hosting supportate da MQ WCF - Self hosted e Windows Service. – Shashi

risposta

1

il problema può essere suddiviso in due elementi distinti:

  1. Come integrare MQ con un trasporto WCF-supported
  2. Come esporre un endpoint WCF su questo trasporto

Per risolvere il primo problema, è necessario consultare MQ-MSMQ bridge fornito con Host Integration Server fino alla versione 2009 (non R2), che consente di avere messaggi deli verificato su code MQSeries inoltrate a MSMQ locali in Windows. Sebbene questa funzione sia deprecated, probabilmente è il modo più semplice se si dispone di una licenza MSDN.

Un altro modo per risolvere questo problema è utilizzare il server BizTalk fornito con un adattatore MQSeries, anche se non si sta utilizzando BizTalk attualmente nella propria azienda eviterei.

L'ultimo modo per eseguire questa operazione è programmare direttamente contro le librerie client di MQSeries .NET o tramite il client XMS.

Se riesci a risolvere il primo problema, la soluzione del secondo è abbastanza semplice. È possibile esporre operazioni di servizio WCF unidirezionali al trasporto msmq utilizzando netMsmqBinding (per WCF su entrambe le estremità) o msmqIntegrationBinding per i client che utilizzano le librerie COM System.Messaging o nativa msmq.

Questo in-effetto funge da servizio di ascolto, con i messaggi gestiti dall'operazione di servizio.

4

È possibile scrivere un servizio Windows che chiama continuamente MQ Get in coda e richiama un servizio WCF per elaborare il messaggio. Oppure puoi scrivere un programma trigger (un'applicazione console) che MQ avvierà quando arriva un messaggio, che richiama il servizio WCF.

+0

Sto anche osservando le opzioni di attivazione Servizio Windows e MQ – BlueChippy

2

Potrei essere migliore di googling di quello che sei, ma mi sembra di aver trovato the answer here.

Sembra che si desidera caricare la configurazione vincolante IBM in voi app.config

<extensions> 
    <bindingElementExtensions> 
    <add name="IBM.XMS.WCF.SoapJmsIbmTransportChannel" 
      type="IBM.XMS.WCF.SoapJmsIbmTransportBindingElementConfig, IBM.XMS.WCF, Version=7.5.0.0, Culture=neutral, PublicKeyToken=8c7c0be90afcd8ba"/> 
    </bindingElementExtensions> 
</extensions> 

Quindi è possibile aggiungere una configurazione di WebSphere vincolante WCF.

<bindings> 
    <customBinding> 
    <binding name="CustomBinding_WMQ"> 
     <textMessageEncoding messageVersion="Soap11" /> 
     <IBM.XMS.WCF.SoapJmsIbmTransportChannel /> 
    </binding> 
    </customBinding> 
</bindings> 
+0

Grazie - una cosa che non ho ancora trovato è ciò che devo fare sul lato Websphere? per esempio. Come faccio a farlo apparire come un servizio? – BlueChippy

+0

Passato attraverso questo ed è l'opposto di quello che sto cercando di fare! Questo mi permette di scrivere su MQ, usando JMS, e poi leggere la risposta. Quello che vorrei è ascoltare la coda per un'altra applicazione per scrivere un messaggio, quindi utilizzare il servizio WCF per elaborare il messaggio. – BlueChippy

Problemi correlati