JMSトピックにパブリッシュされた更新を受信し、それをXMPPパケット(PresenceパケットまたはPubSubパケット)に変換して、XMPPエンドポイントにルーティングする必要があります。
私はActiveMQをJMSプロバイダーとして使用し、ApacheCamelをルーティングエンジンとして使用しています。以下に、Camelでの私のルートを示します(簡単にするために、jmsトピックの代わりにsystem.inから読み取ります)。
from("stream:in?promptMessage=Enter something:").process( new Processor(){
public void process(Exchange exchange) throws Exception {
System.out.println("sending presence with message: " + exchange.getIn().getBody().toString());
Presence p = new Presence(Type.available, exchange.getIn().getBody().toString(), 5, Mode.chat);
exchange.getIn().setBody(p);
}
}).to("xmpp:user1@banl080161?password=pass1");
user1 @ banl080161は、system.inから指定されたステータスのカスタムプレゼンスパケットを送信できる必要があるという考えです。私はsystem.inから読み取り、プレゼンスパケットを作成し、このパケットを交換本体に設定して、user1@banl080161に代わってこのプレゼンスを送信しています。
問題: XMPPサーバーに何も送信されません。PSIを使用してuser1 @ banl080161からのパケットを確認し、user1 @ banl080161は確実にオンラインになりますが、カスタムプレゼンスメッセージは受信されません。
このようなことをApacheCamelで行うことは可能ですか?