サブスクライバを作成したら、Oracle Messaging Gateway のログに以下のメッセージが出力されていた。
MGW propagation job SUB_OMG_SAMPLE_QUEUE (MGWADMIN.OMG_SAMPLE_QUEUE --> QUEUE1@OMG_LINK) has been added. ... Failed to access queue MGWADMIN.OMG_SAMPLE_QUEUE; provider queue: MGWADMIN.OMG_SAMPLE_QUEUE oracle.mgw.common.GatewayException: [720] AQ payload type SYS.MGW_BASIC_MSG_T not supported; queue: MGWADMIN.OMG_SAMPLE_QUEUE at oracle.mgw.common.MgwUtil.GatewayException(MgwUtil.java:740) at oracle.mgw.drivers.aq.jms.AQJmsLink.verifyAQPayloadSupported(AQJmsLink.java:3052) at oracle.mgw.drivers.aq.jms.AQJmsLink.registerDestination(AQJmsLink.java:919) at oracle.mgw.engine.DestMgr.getAQDest(DestMgr.java:151) at oracle.mgw.engine.JobData.init(JobData.java:230) at oracle.mgw.engine.Worker.recoverJob(Worker.java:1086) at oracle.mgw.engine.Worker.myRun(Worker.java:98) at oracle.mgw.engine.ManagedThr.run(ManagedThr.java:58)
キュー・テーブルの queue_payload_type を sys.mgw_basic_msg_t にしているのに、システム・リンクの interface_type を dbms_mgwadm.jms_queue_connection にしていたのが原因だった。interface_type を指定しないと、Base Javaリンクになる。
[720] AQペイロード型
がサポートされていません。キュー: メッセージ・ゲートウェイの伝播ジョブによって使用されるOracle Streams AQキューのペイロード型がメッセージ・ゲートウェイによって直接サポートされていません。JMS以外の伝播の場合、メッセージ・ゲートウェイではペイロード型のRAW、SYS.MGW_BASIC_MSG_TおよびSYS.MGW_TIBRV_MSG_Tを直接サポートしています。
考えられるアクションは次のとおりです。
メッセージ・ゲートウェイの伝播ジョブをキュー・ペイロード型からサポートされている型へ変換するように構成します。
メッセージ・ゲートウェイの伝播ジョブを削除し、サポートされているペイロード型のOracle Streams AQキューを使用する新規ジョブを作成します。
Java Message Service(JMS)伝播の場合は、メッセージ・ゲートウェイの伝播ジョブを削除し、Oracle Java Message Service(OJMS)によってそのOracle Streams AQペイロード型がサポートされている新規ジョブを作成する必要があります。JMS伝播に対する変換はサポートされていません。
Oracle Messaging Gatewayの監視
「JMS以外の伝播の場合、メッセージ・ゲートウェイではペイロード型のRAW、SYS.MGW_BASIC_MSG_TおよびSYS.MGW_TIBRV_MSG_Tを直接サポートしています。」ってことは、JMSの場合は直接サポートしてないってことになる。
- 修正前
declare v_options sys.mgw_properties; v_prop sys.mgw_mqseries_properties; begin v_prop := sys.mgw_mqseries_properties.construct(); v_prop.max_connections := 1; v_prop.interface_type := dbms_mgwadm.jms_queue_connection; v_prop.username := null; v_prop.password := null; v_prop.hostname := '192.168.0.140'; v_prop.port := 1414; v_prop.channel := 'channel1'; v_prop.queue_manager := 'saturn.queue.manager'; v_prop.outbound_log_queue := 'out_log_queue1'; v_prop.inbound_log_queue := 'in_log_queue1'; dbms_mgwadm.create_msgsystem_link( linkname => 'omg_link', properties => v_prop, options => v_options ); end; /
- 修正後(v_prop.interface_type... をコメントアウト)
declare v_options sys.mgw_properties; v_prop sys.mgw_mqseries_properties; begin v_prop := sys.mgw_mqseries_properties.construct(); v_prop.max_connections := 1; -- v_prop.interface_type := dbms_mgwadm.jms_queue_connection; v_prop.username := null; v_prop.password := null; v_prop.hostname := '192.168.0.140'; v_prop.port := 1414; v_prop.channel := 'channel1'; v_prop.queue_manager := 'saturn.queue.manager'; v_prop.outbound_log_queue := 'out_log_queue1'; v_prop.inbound_log_queue := 'in_log_queue1'; dbms_mgwadm.create_msgsystem_link( linkname => 'omg_link', properties => v_prop, options => v_options ); end; /