共通APIを使用した非同期受信処理のサービス利用側アプリケーションのサンプルプログラムです。
: : public class ESIAPIReceiveTest { public static void main(String[] args) { // (1) エンドポイント名の指定 String strEndpoint = "receivetest"; if (args.length >= 1) { strEndpoint = args[0]; } try { System.out.println("java.home=" + System.getProperty("java.home")); // (2) Serviceクラスの生成 ESIService es = ESIServiceFactory.getService(strEndpoint); // (3) 受信APIの呼出し ESIMessage retMessage = es.receive(); if (retMessage != null) { // (4) ペイロードの取り出し byte[] bytePayload = retMessage.getPayload().getBytePayload().getObject(); String byteString = new String(bytePayload); System.out.println("objectPayload=[" + byteString + "]"); // (5) ヘッダの取り出し System.out.println("user.result=" + retMessage.getHeader().getParameter().get("result")); : : } } else { // (6) 受信するメッセージがなかったときの処理 System.out.println("ESIMessage was not queuing."); } } catch (ESIAPIException e) { e.printStackTrace(); } } : : } |
エンドポイント名の設定
エンドポイント名“receivetest”を設定します。
エンドポイント定義で指定するエンドポイント名と一致させます。
エンドポイント定義:<INSDIR>\sample\App\def\endpoint.xml
<?xml version="1.0" encoding="UTF-8" ?>
<EndpointList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="esi-endpoint.xsd">
:
<Endpoint name="receivetest" sync="false"> ………エンドポイント名
<Description>Async Receive Endpoint</Description>
<QueueName>ESIOutboundQueue</QueueName>
</Endpoint>
</EndpointList> |
Serviceクラスの作成
エンドポイント名をもとに、受信のServiceクラスを作成します。
受信APIの呼出し
メッセージ送受信API“ESIService#receive()”を呼び出します。
ペイロードの取出し
共通メッセージの中から、ペイロードを取り出します。
ヘッダの取出し
共通メッセージの中から、ヘッダパラメタキー名と値を取り出します。
サンプルプログラムは、共通メッセージのヘッダのすべてのパラメタキー名と値を取り出すように作成されています。
受信するメッセージがなかったときの処理
JMSキューに受信するメッセージがなかったときの処理です。