目当ては、チャネルを購読して聴くJavaクライアントを構築することです。その後、累積サーバからhadoopに到着するイベントを処理します。まず、Javaクライアントを使用してcumulocityサーバーに接続(購読)するのは困難でした。しかし、今では加入者を確保しています(コードコメントで説明されているように、値を得ることができるため)。次に、購読者は、cumulocity serverで定義したチャンネルを聞きます。しかし、私たちはこのステップを達成するのに役立つcumulocity javaドキュメントで有用な方法や何かを得ることができませんでした。 ここにコードがあります。私は資格情報とサーバーのURLを匿名化しました。cumulocityのJavaクライアントはどのようにイベントをリッスンしますか?
package c8y.example.hello_agent;
import c8y.IsDevice;
import com.cumulocity.model.authentication.CumulocityCredentials;
import com.cumulocity.rest.representation.inventory.ManagedObjectRepresentation;
import com.cumulocity.sdk.client.Platform;
import com.cumulocity.sdk.client.PlatformImpl;
import com.cumulocity.sdk.client.inventory.InventoryApi;
import com.cumulocity.sdk.client.PlatformParameters;
import com.cumulocity.sdk.client.SDKException;
import com.cumulocity.sdk.client.notification.*;
import com.cumulocity.sdk.client.ClientConfiguration;
import com.cumulocity.*;
import c8y.example.hello_agent.cred;
public class CepCustomNotificationsSubscriber implements Subscriber<String, Object> {
public static final String CEP_CUSTOM_NOTIFICATIONS_URL = "test/sendTemperature";
private final Subscriber<String, Object> subscriber;
public CepCustomNotificationsSubscriber(PlatformParameters parameters) {
subscriber = createSubscriber(parameters);
}
private Subscriber<String, Object> createSubscriber(PlatformParameters parameters) {
// @formatter:off
return SubscriberBuilder.<String, Object>anSubscriber()
.withParameters(parameters)
.withEndpoint(CEP_CUSTOM_NOTIFICATIONS_URL)
.withSubscriptionNameResolver(new Identity())
.withDataType(Object.class)
.build();
// @formatter:on
}
public Subscription<String> subscribe(final String channelID, final SubscriptionListener<String, Object> handler) throws SDKException {
return subscriber.subscribe(channelID, handler);
}
public void disconnect() {
subscriber.disconnect();
}
private static final class Identity implements SubscriptionNameResolver<String> {
@Override
public String apply(String id) {
return id;
}
}
public static void main(String[] args)
{
cred crede = new cred();
String uRl = "https://xxx.cumulocityiox.com";
CumulocityCredentials rC = new CumulocityCredentials(crede.name,crede.pass);
PlatformParameters parameters = new PlatformParameters(uRl,rC, new ClientConfiguration());
CepCustomNotificationsSubscriber t = new CepCustomNotificationsSubscriber(parameters);
System.out.println(t.toString() + " - " + t.CEP_CUSTOM_NOTIFICATIONS_URL.toString()); // It prints an integer number corresponding to the subscriber t.
// Now how to listen to the events on the channel and get the desired data.
}
}
サーバへの接続を検証する整数値を取得できるため、しかし今、次のポイントは、イベントのチャンネルを聴いてそのイベントを取得する方法です。どんな助力も高く評価されます。
私はあなたがチャンネル「customevent/cumulocity-システムID」へのサブスクリプションを作成する場合は、これらのイベントを取得することができますinsert into
SendNotification
select
e.event as payload,
"customevent/" || e.event.source.value as channelName
from
EventCreated e;
のように作成したCEPモジュールを持っている
を想定し
いいえ、ここでのポイントは、イベントを聴いたり取得したりする方法です。 –
私の編集をご覧ください。 @irfanaziz – Jorge