2012-02-29 15 views
4

キュー・マネージャーQM_MINEキュー・マネージャーQM_CLIENTおよびキューCLIENT.DATAからリモート・キュー定義CLIENT.DATA(送信キュー、送信/受信チャネルなど)を介してXMLテキスト・メッセージを送信しています。メッセージは宛先(クライアントのCLIENT.DATAキュー)に到達します。現在の問題は、QM_CLIENTのCLIENT.DATAにメッセージが自動的に到着するとすぐに、QM_MINE内のローカルキューCLIENT.DATA.ACK上で承認メッセージ(正確に送信されたメッセージのコピー)を受信できることです。WebSphere MQの確認応答および返信キュー

WebSphere v7.1のインフォメーション・センターで、reply-to queuemessage acknowledgementのリソースがいくつか見つかりましたが、実際には役に立ちませんでした。

これまでのところ、返信をキューに使用しようとしました。 QM.OCCに送信キューQM_MCTを作成しました。私がCLIENT.DATAキューに送るすべてのメッセージは、setJMSReplyTo()メソッドを使用してreply-queueを指定しました。しかし、私はそうではないと確信しています、もっと私は行方不明です。

MQオブジェクト概要:

QM_MINE:たclient_data(remoteQ)、QM_CLIENT(transmitQ)、CLIENT_DATA_ACK(LOCALQ)

QM_CLIENT:たclient_data(LOCALQ)、QM_MINE(transmitQ)、

そして、両端の送信側/受信側チャネル。

ソースコードFragements:(トランザクション下)

クライアントデータ送信者:

public class ClientServiceImpl extends JmsGatewaySupport implements ClientService { 

    @Override 
    public void sendClientData(String dataXML) { 
     getJmsTemplate().convertAndSend(dataXML); 
    } 
} 

メッセージコンバータ:

public Message toMessage(Object o, Session session) throws JMSException, MessageConversionException { 
    String dataXML = (String) o; 
    TextMessage message = session.createTextMessage(); 
    message.setJMSReplyTo(replyToQueue); 
    message.setText(dataXML); 
    return message; 
} 

注:

現在の私にはありませんどんなMDPやMDBでも聞くことができます。 QM_CLIENTのCLIENT_DATAキューからメッセージを消費します。 QM_MINEから送信するだけで、MQによってQM_CLIENTに移動されます。この機能を利用するにはメッセージを消費する必要がありますか?

Linuxでは、Java、JMS、Spring、およびWebShere MQ v7.1を使用します。ご要望があれば、より多くの情報が提供されます。

答えて

3

MQMD.Reportフィールドのセクションを参照してください。はい、返信先フィールドを設定して、確認応答があなたに戻ってくるようにする必要があります。ただし、レポートメッセージを生成するようにWMQに指示する必要もあります。必要な場合は、フィールドをMQRO_COA_WITH_FULL_DATAに設定します。

+0

ありがとうございます。私はそれに "message.setIntProperty(WMQConstants.JMS_IBM_REPORT_COA、MQC.MQRO_COA_WITH_FULL_DATA);という行を追加して動作させました。 "message.setText(..)"の直前にあります。しかし、QM_CLIENTでは、(QM_MINEの送信キューとともに)CLIENT_DATA_ACKのリモートキュー定義を作成しなければなりませんでした。これはどのようになるはずですか? QM_CLIENTでリモート・キュー定義を作成せずにこれを行うことは可能ですか? – arrehman

+1

'QM_CLIENT'はルートを' QM_MINE'に解決できる必要があります。 'QM_CLIENT'に定義された' QM_MINE'という名前のXMitQがある場合、メッセージは戻ってきます。実際のXMitQ名( 'RNAME'または' RQMNAME'エントリなし)を指定する 'QM_CLIENT'で定義された' QM_MINE'という名前のQRemoteがそのトリックを行います。 –

+0

QM_CLIENTにRemoteQ DATA.CLIENT.ACKを付けずにこの処理を行いたいので、削除してQM_CLIENTにXMITQ QM_MINEだけを残しましたが、replyToメッセージはQM_MINEに蓄積されます。 replyToキュー名はDATAです。CLIENT.ACK(QM_MINEはQM_CLIENTではありません)。まだ何かが間違っている。 – arrehman