第123章 Paho
Paho コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Paho コンポーネントは、Eclipse Paho ライブラリーを使用して MQTT メッセージングプロトコルのコネクターを提供します。Paho は最も人気の高い MQTT ライブラリーの 1 つであるため、Java プロジェクトと統合する場合は Camel Paho コネクターを使用します。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
paho:queueName[?options]
たとえば、以下のスニペットは、Camel ルーターと同じホストにインストールされている MQTT ブローカーからメッセージを読み取ります。
from("paho:some/queue").
to("mock:test");
以下のスニペットは、MQTT ブローカーにメッセージを送信します。
from("direct:test").
to("paho:some/target/queue");
?option=value&option=value&... の形式で、URI にクエリーオプションを追加できます。たとえば、リモート MQTT ブローカーからメッセージを読み取る方法は次のとおりです。
from("paho:some/queue?brokerUrl=tcp://iot.eclipse.org:1883").
to("mock:test");
コンポーネントのプロジェクトへの追加 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Maven ユーザーは、このコンポーネントの以下の依存関係を
pom.xml に追加する必要があります。
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-paho</artifactId>
<version>x.y.z</version>
<!-- use the same version as your Camel core version -->
</dependency>
Paho アーティファクトは Maven Central でホストされていないため、Eclipse Paho リポジトリーを POM xml ファイルに追加する必要があります。
<repositories>
<repository>
<id>eclipse-paho</id>
<url>https://repo.eclipse.org/content/repositories/paho-releases</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
デフォルトのペイロードタイプ リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Camel Paho コンポーネントは MQTT メッセージから抽出(または配置)されたバイナリーペイロードで動作します。
// Receive payload
byte[] payload = (byte[]) consumerTemplate.receiveBody("paho:topic");
// Send payload
byte[] payload = "message".getBytes();
producerTemplate.sendBody("paho:topic", payload);
当然ながら、Camel ビルドタイプ変換 API は自動データ型変換を実行できます。以下の例では、Camel は自動的にバイナリーペイロードを String (および逆順)に変換します。
// Receive payload
String payload = consumerTemplate.receiveBody("paho:topic", String.class);
// Send payload
String payload = "message";
producerTemplate.sendBody("paho:topic", payload);
URI オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
|
オプション
|
デフォルト
|
説明
|
|---|---|---|
clientId
|
camel-<timestamp>
|
MQTT クライアント識別子。 |
brokerUrl
|
tcp://localhost:1883
|
MQTT ブローカーの URL。
|
persistence
|
memory
|
使用されるクライアントの永続性 - memory または file
|
filePersistenceDirectory
|
現行ディレクトリー | (Camel 2.16.1 および 2.17) ファイルの永続性で使用されるベースディレクトリー。ファイル以外の永続性が使用されている場合は有効になりません。 |
qos
|
2 |
クライアントの QoS (Quality of Service)レベル(0-2)
|
connectOptions
|
none |
Camel レジストリーにある org.eclipse.paho.client.mqttv3.MqttConnectOptions インスタンスへの参照。参照 MqttConnectOptions インスタンスは、エンドポイントによって接続を初期化するために使用されます。たとえば、connectOptions=#myConnectOptions という名前の Spring Bean を参照する場合、表記法を使用できます。ConnectOptions myレジストリーに MqttConnectOptions のインスタンスが 1 つしかない場合は、エンドポイントによって自動的に取得されます。
|
たとえば、Camel で使用される規則オーバー設定方法は、ほとんどの状況で非常に便利ですが、MQTT クライアント接続をより詳細に制御したい場合があります。このような状況に対応するために、タイプ
org.eclipse.paho.client.mqttv3.MqttConnectOptions の Bean を Camel レジストリーに追加します。Spring アプリケーションでは、Bean をアプリケーションコンテキストに追加することを意味します。以下のスニペットは、パスワードベースの認証を使用して MQTT ブローカーに接続します。
@Bean
MqttConnectOptions connectOptions() {
MqttConnectOptions connectOptions = new MqttConnectOptions();
connectOptions.setUserName("henry");
connectOptions.setPassword("secret".toCharArray());
return connectOptions;
}
Headers リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
次のヘッダーは、Paho コンポーネントによって認識されます。
|
ヘッダー
|
Java 定数
| エンドポイントタイプ | 値のタイプ |
説明
|
|---|---|---|---|---|
PahoOriginalMessage
|
PahoConstants.HEADER_ORIGINAL_MESSAGE
|
コンシューマー |
org.eclipse.paho.client.mqttv3.MqttMessage
|
クライアントが受信した元の Paho メッセージインスタンス。
非推奨: Camel 2.17 以降では、元の MqttMessage はヘッダーとして保存されませんが、ゲッター
getMqttMessage を持つ org.apache.camel.component.paho.PahoMessage メッセージには保存されません。
|
CamelMqttTopic
|
PahoConstants.MQTT_TOPIC | コンシューマー | 文字列 | Camel 2.17: トピック |