共通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キューに受信するメッセージがなかったときの処理です。