Search in sources :

Example 1 with SubscriptionItem

use of org.apache.eventmesh.common.protocol.SubscriptionItem in project incubator-eventmesh by apache.

the class CloudEventsAsyncSubscribe method main.

public static void main(String[] args) throws InterruptedException {
    Properties properties = Utils.readPropertiesFile(ExampleConstants.CONFIG_FILE_NAME);
    final String eventMeshIp = properties.getProperty(ExampleConstants.EVENTMESH_IP);
    final String eventMeshGrpcPort = properties.getProperty(ExampleConstants.EVENTMESH_GRPC_PORT);
    EventMeshGrpcClientConfig eventMeshClientConfig = EventMeshGrpcClientConfig.builder().serverAddr(eventMeshIp).serverPort(Integer.parseInt(eventMeshGrpcPort)).consumerGroup(ExampleConstants.DEFAULT_EVENTMESH_TEST_CONSUMER_GROUP).env("env").idc("idc").sys("1234").build();
    org.apache.eventmesh.common.protocol.SubscriptionItem subscriptionItem = new SubscriptionItem();
    subscriptionItem.setTopic(ExampleConstants.EVENTMESH_GRPC_ASYNC_TEST_TOPIC);
    subscriptionItem.setMode(SubscriptionMode.CLUSTERING);
    subscriptionItem.setType(SubscriptionType.ASYNC);
    EventMeshGrpcConsumer eventMeshGrpcConsumer = new EventMeshGrpcConsumer(eventMeshClientConfig);
    eventMeshGrpcConsumer.init();
    eventMeshGrpcConsumer.registerListener(handler);
    eventMeshGrpcConsumer.subscribe(Collections.singletonList(subscriptionItem));
    Thread.sleep(60000);
    eventMeshGrpcConsumer.unsubscribe(Collections.singletonList(subscriptionItem));
}
Also used : EventMeshGrpcClientConfig(org.apache.eventmesh.client.grpc.config.EventMeshGrpcClientConfig) SubscriptionItem(org.apache.eventmesh.common.protocol.SubscriptionItem) SubscriptionItem(org.apache.eventmesh.common.protocol.SubscriptionItem) Properties(java.util.Properties) EventMeshGrpcConsumer(org.apache.eventmesh.client.grpc.consumer.EventMeshGrpcConsumer)

Example 2 with SubscriptionItem

use of org.apache.eventmesh.common.protocol.SubscriptionItem in project incubator-eventmesh by apache.

the class CloudEventsSubscribeReply method main.

public static void main(String[] args) throws InterruptedException {
    Properties properties = Utils.readPropertiesFile(ExampleConstants.CONFIG_FILE_NAME);
    final String eventMeshIp = properties.getProperty(ExampleConstants.EVENTMESH_IP);
    final String eventMeshGrpcPort = properties.getProperty(ExampleConstants.EVENTMESH_GRPC_PORT);
    EventMeshGrpcClientConfig eventMeshClientConfig = EventMeshGrpcClientConfig.builder().serverAddr(eventMeshIp).serverPort(Integer.parseInt(eventMeshGrpcPort)).consumerGroup(ExampleConstants.DEFAULT_EVENTMESH_TEST_CONSUMER_GROUP).env("env").idc("idc").sys("1234").build();
    SubscriptionItem subscriptionItem = new SubscriptionItem();
    subscriptionItem.setTopic(ExampleConstants.EVENTMESH_GRPC_RR_TEST_TOPIC);
    subscriptionItem.setMode(SubscriptionMode.CLUSTERING);
    subscriptionItem.setType(SubscriptionType.SYNC);
    EventMeshGrpcConsumer eventMeshGrpcConsumer = new EventMeshGrpcConsumer(eventMeshClientConfig);
    eventMeshGrpcConsumer.init();
    eventMeshGrpcConsumer.registerListener(handler);
    eventMeshGrpcConsumer.subscribe(Collections.singletonList(subscriptionItem));
    Thread.sleep(60000);
    eventMeshGrpcConsumer.unsubscribe(Collections.singletonList(subscriptionItem));
}
Also used : EventMeshGrpcClientConfig(org.apache.eventmesh.client.grpc.config.EventMeshGrpcClientConfig) SubscriptionItem(org.apache.eventmesh.common.protocol.SubscriptionItem) Properties(java.util.Properties) EventMeshGrpcConsumer(org.apache.eventmesh.client.grpc.consumer.EventMeshGrpcConsumer)

Example 3 with SubscriptionItem

use of org.apache.eventmesh.common.protocol.SubscriptionItem in project incubator-eventmesh by apache.

the class EventmeshSubscribeBroadcast method main.

public static void main(String[] args) throws InterruptedException {
    Properties properties = Utils.readPropertiesFile(ExampleConstants.CONFIG_FILE_NAME);
    final String eventMeshIp = properties.getProperty(ExampleConstants.EVENTMESH_IP);
    final String eventMeshGrpcPort = properties.getProperty(ExampleConstants.EVENTMESH_GRPC_PORT);
    EventMeshGrpcClientConfig eventMeshClientConfig = EventMeshGrpcClientConfig.builder().serverAddr(eventMeshIp).serverPort(Integer.parseInt(eventMeshGrpcPort)).consumerGroup(ExampleConstants.DEFAULT_EVENTMESH_TEST_CONSUMER_GROUP).env("env").idc("idc").sys("1234").build();
    SubscriptionItem subscriptionItem = new SubscriptionItem();
    subscriptionItem.setTopic(ExampleConstants.EVENTMESH_GRPC_BROADCAT_TEST_TOPIC);
    subscriptionItem.setMode(SubscriptionMode.BROADCASTING);
    subscriptionItem.setType(SubscriptionType.ASYNC);
    EventMeshGrpcConsumer eventMeshGrpcConsumer = new EventMeshGrpcConsumer(eventMeshClientConfig);
    eventMeshGrpcConsumer.init();
    eventMeshGrpcConsumer.registerListener(handler);
    eventMeshGrpcConsumer.subscribe(Collections.singletonList(subscriptionItem));
    Thread.sleep(60000);
    eventMeshGrpcConsumer.unsubscribe(Collections.singletonList(subscriptionItem));
}
Also used : EventMeshGrpcClientConfig(org.apache.eventmesh.client.grpc.config.EventMeshGrpcClientConfig) SubscriptionItem(org.apache.eventmesh.common.protocol.SubscriptionItem) Properties(java.util.Properties) EventMeshGrpcConsumer(org.apache.eventmesh.client.grpc.consumer.EventMeshGrpcConsumer)

Example 4 with SubscriptionItem

use of org.apache.eventmesh.common.protocol.SubscriptionItem in project incubator-eventmesh by apache.

the class ClientGroupWrapper method initClientGroupPersistentConsumer.

public synchronized void initClientGroupPersistentConsumer() throws Exception {
    if (inited4Persistent.get()) {
        return;
    }
    Properties keyValue = new Properties();
    keyValue.put("isBroadcast", "false");
    keyValue.put("consumerGroup", group);
    keyValue.put("eventMeshIDC", eventMeshTCPConfiguration.eventMeshIDC);
    keyValue.put("instanceName", EventMeshUtil.buildMeshTcpClientID(sysId, "SUB", eventMeshTCPConfiguration.eventMeshCluster));
    persistentMsgConsumer.init(keyValue);
    EventListener listener = (event, context) -> {
        eventMeshTcpMonitor.getTcpSummaryMetrics().getMq2eventMeshMsgNum().incrementAndGet();
        event = CloudEventBuilder.from(event).withExtension(EventMeshConstants.REQ_MQ2EVENTMESH_TIMESTAMP, String.valueOf(System.currentTimeMillis())).withExtension(EventMeshConstants.REQ_RECEIVE_EVENTMESH_IP, eventMeshTCPConfiguration.eventMeshServerIp).build();
        String topic = event.getSubject();
        EventMeshAsyncConsumeContext eventMeshAsyncConsumeContext = (EventMeshAsyncConsumeContext) context;
        Session session = downstreamDispatchStrategy.select(group, topic, groupConsumerSessions);
        String bizSeqNo = EventMeshUtil.getMessageBizSeq(event);
        if (session == null) {
            try {
                Integer sendBackTimes = 0;
                String sendBackFromEventMeshIp = "";
                if (StringUtils.isNotBlank(Objects.requireNonNull(event.getExtension(EventMeshConstants.EVENTMESH_SEND_BACK_TIMES)).toString())) {
                    sendBackTimes = (Integer) event.getExtension(EventMeshConstants.EVENTMESH_SEND_BACK_TIMES);
                }
                if (StringUtils.isNotBlank(Objects.requireNonNull(event.getExtension(EventMeshConstants.EVENTMESH_SEND_BACK_IP)).toString())) {
                    sendBackFromEventMeshIp = (String) event.getExtension(EventMeshConstants.EVENTMESH_SEND_BACK_IP);
                }
                logger.error("found no session to downstream msg,groupName:{}, topic:{}, " + "bizSeqNo:{}, sendBackTimes:{}, sendBackFromEventMeshIp:{}", group, topic, bizSeqNo, sendBackTimes, sendBackFromEventMeshIp);
                if (sendBackTimes >= eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshTcpSendBackMaxTimes) {
                    logger.error("sendBack to broker over max times:{}, groupName:{}, topic:{}, " + "bizSeqNo:{}", eventMeshTCPServer.getEventMeshTCPConfiguration().eventMeshTcpSendBackMaxTimes, group, topic, bizSeqNo);
                } else {
                    sendBackTimes++;
                    event = CloudEventBuilder.from(event).withExtension(EventMeshConstants.EVENTMESH_SEND_BACK_TIMES, sendBackTimes.toString()).withExtension(EventMeshConstants.EVENTMESH_SEND_BACK_IP, eventMeshTCPConfiguration.eventMeshServerIp).build();
                    sendMsgBackToBroker(event, bizSeqNo);
                }
            } catch (Exception e) {
                logger.warn("handle msg exception when no session found", e);
            }
            eventMeshAsyncConsumeContext.commit(EventMeshAction.CommitMessage);
            return;
        }
        SubscriptionItem subscriptionItem = subscriptions.get(topic);
        DownStreamMsgContext downStreamMsgContext = new DownStreamMsgContext(event, session, persistentMsgConsumer, eventMeshAsyncConsumeContext.getAbstractContext(), false, subscriptionItem);
        // msg put in eventmesh,waiting client ack
        session.getPusher().unAckMsg(downStreamMsgContext.seq, downStreamMsgContext);
        session.downstreamMsg(downStreamMsgContext);
        eventMeshAsyncConsumeContext.commit(EventMeshAction.ManualAck);
    };
    persistentMsgConsumer.registerEventListener(listener);
    inited4Persistent.compareAndSet(false, true);
    logger.info("init persistentMsgConsumer success, group:{}", group);
}
Also used : OnExceptionContext(org.apache.eventmesh.api.exception.OnExceptionContext) EventMeshConstants(org.apache.eventmesh.runtime.constants.EventMeshConstants) DownstreamDispatchStrategy(org.apache.eventmesh.runtime.core.protocol.tcp.client.group.dispatch.DownstreamDispatchStrategy) EventMeshAction(org.apache.eventmesh.api.EventMeshAction) CloudEvent(io.cloudevents.CloudEvent) DownStreamMsgContext(org.apache.eventmesh.runtime.core.protocol.tcp.client.session.push.DownStreamMsgContext) LoggerFactory(org.slf4j.LoggerFactory) SendCallback(org.apache.eventmesh.api.SendCallback) MQProducerWrapper(org.apache.eventmesh.runtime.core.plugin.MQProducerWrapper) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) ReentrantReadWriteLock(java.util.concurrent.locks.ReentrantReadWriteLock) StringUtils(org.apache.commons.lang3.StringUtils) CollectionUtils(org.apache.commons.collections4.CollectionUtils) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) EventMeshTcpRetryer(org.apache.eventmesh.runtime.core.protocol.tcp.client.session.retry.EventMeshTcpRetryer) EventMeshUtil(org.apache.eventmesh.runtime.util.EventMeshUtil) EventMeshTCPServer(org.apache.eventmesh.runtime.boot.EventMeshTCPServer) EventMeshTcpMonitor(org.apache.eventmesh.runtime.metrics.tcp.EventMeshTcpMonitor) ReadWriteLock(java.util.concurrent.locks.ReadWriteLock) HttpTinyClient(org.apache.eventmesh.runtime.util.HttpTinyClient) EventMeshAsyncConsumeContext(org.apache.eventmesh.api.EventMeshAsyncConsumeContext) SendResult(org.apache.eventmesh.api.SendResult) Properties(java.util.Properties) Logger(org.slf4j.Logger) Iterator(java.util.Iterator) MQConsumerWrapper(org.apache.eventmesh.runtime.core.plugin.MQConsumerWrapper) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Set(java.util.Set) SubscriptionItem(org.apache.eventmesh.common.protocol.SubscriptionItem) EventMeshTCPConfiguration(org.apache.eventmesh.runtime.configuration.EventMeshTCPConfiguration) UpStreamMsgContext(org.apache.eventmesh.runtime.core.protocol.tcp.client.session.send.UpStreamMsgContext) Objects(java.util.Objects) Session(org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session) List(java.util.List) CloudEventBuilder(io.cloudevents.core.builder.CloudEventBuilder) RequestReplyCallback(org.apache.eventmesh.api.RequestReplyCallback) Preconditions(com.google.common.base.Preconditions) EventListener(org.apache.eventmesh.api.EventListener) JsonUtils(org.apache.eventmesh.common.utils.JsonUtils) SubscriptionMode(org.apache.eventmesh.common.protocol.SubscriptionMode) SubscriptionItem(org.apache.eventmesh.common.protocol.SubscriptionItem) DownStreamMsgContext(org.apache.eventmesh.runtime.core.protocol.tcp.client.session.push.DownStreamMsgContext) EventMeshAsyncConsumeContext(org.apache.eventmesh.api.EventMeshAsyncConsumeContext) EventListener(org.apache.eventmesh.api.EventListener) Properties(java.util.Properties) Session(org.apache.eventmesh.runtime.core.protocol.tcp.client.session.Session)

Example 5 with SubscriptionItem

use of org.apache.eventmesh.common.protocol.SubscriptionItem in project incubator-eventmesh by apache.

the class MessageUtils method generateSubscription.

public static Subscription generateSubscription() {
    List<SubscriptionItem> subscriptionItems = new ArrayList<>();
    subscriptionItems.add(new SubscriptionItem("TEST-TOPIC-TCP-SYNC", SubscriptionMode.CLUSTERING, SubscriptionType.SYNC));
    subscriptionItems.add(new SubscriptionItem("TEST-TOPIC-TCP-SYNC2", SubscriptionMode.CLUSTERING, SubscriptionType.SYNC));
    subscriptionItems.add(new SubscriptionItem("TEST-TOPIC-TCP-SYNC3", SubscriptionMode.CLUSTERING, SubscriptionType.SYNC));
    subscriptionItems.add(new SubscriptionItem("TEST-TOPIC-TCP-SYNC4", SubscriptionMode.CLUSTERING, SubscriptionType.SYNC));
    Subscription subscription = new Subscription();
    subscription.setTopicList(subscriptionItems);
    return subscription;
}
Also used : SubscriptionItem(org.apache.eventmesh.common.protocol.SubscriptionItem) ArrayList(java.util.ArrayList) Subscription(org.apache.eventmesh.common.protocol.tcp.Subscription)

Aggregations

SubscriptionItem (org.apache.eventmesh.common.protocol.SubscriptionItem)26 ArrayList (java.util.ArrayList)11 Properties (java.util.Properties)8 Package (org.apache.eventmesh.common.protocol.tcp.Package)7 EventMeshGrpcClientConfig (org.apache.eventmesh.client.grpc.config.EventMeshGrpcClientConfig)5 EventMeshGrpcConsumer (org.apache.eventmesh.client.grpc.consumer.EventMeshGrpcConsumer)5 List (java.util.List)4 EventMeshException (org.apache.eventmesh.common.exception.EventMeshException)4 Subscription (org.apache.eventmesh.common.protocol.tcp.Subscription)4 Preconditions (com.google.common.base.Preconditions)3 CloudEvent (io.cloudevents.CloudEvent)3 EventListener (org.apache.eventmesh.api.EventListener)3 EventMeshAsyncConsumeContext (org.apache.eventmesh.api.EventMeshAsyncConsumeContext)3 CloudEventBuilder (io.cloudevents.core.builder.CloudEventBuilder)2 HashSet (java.util.HashSet)2 Iterator (java.util.Iterator)2 Objects (java.util.Objects)2 Set (java.util.Set)2 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)2 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)2