[ROCKETMQ-17] Develop a vendor-neutral open standard for distributed messaging: add producer sample https://issues.apache.org/jira/browse/ROCKETMQ-17
Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/13cba188 Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/13cba188 Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/13cba188 Branch: refs/heads/spec Commit: 13cba18842604067e20d6c1048f83e614e4ac949 Parents: 3504967 Author: vintagewang <[email protected]> Authored: Wed Dec 28 14:06:14 2016 +0800 Committer: vintagewang <[email protected]> Committed: Wed Dec 28 14:06:14 2016 +0800 ---------------------------------------------------------------------- .../apache/openmessaging/MessagingEndPoint.java | 2 + .../openmessaging/MessagingEndPointManager.java | 4 +- .../internal/MessagingEndPointFactory.java | 11 ++--- .../messaging-user-level-samples/java/pom.xml | 27 +++++++++++++ .../apache/openmessaging/samples/Producer.java | 42 ++++++++++++++++++++ spec/code/pom.xml | 6 +++ 6 files changed, 85 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/13cba188/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPoint.java ---------------------------------------------------------------------- diff --git a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPoint.java b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPoint.java index f06d7e5..f90cb62 100644 --- a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPoint.java +++ b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPoint.java @@ -30,4 +30,6 @@ public interface MessagingEndPoint { PushConsumer createPushConsumer(); PullConsumer createPullConsumer(); + + BytesMessage createBytesMessage(final String topic, final byte[] body); } http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/13cba188/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPointManager.java ---------------------------------------------------------------------- diff --git a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPointManager.java b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPointManager.java index 5635893..0ecd870 100644 --- a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPointManager.java +++ b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPointManager.java @@ -28,11 +28,11 @@ import java.util.Properties; * @author [email protected] */ public class MessagingEndPointManager { - public static MessagingEndPoint getMessagingEndPoint(String url) throws Exception { + public static MessagingEndPoint getMessagingEndPoint(String url) { return getMessagingEndPoint(url, new Properties()); } - public static MessagingEndPoint getMessagingEndPoint(String url, Properties properties) throws Exception { + public static MessagingEndPoint getMessagingEndPoint(String url, Properties properties) { Map<String, List<String>> driverUrl = URISpecParser.parseURI(url); if (null == driverUrl || driverUrl.size() == 0) { throw new IllegalArgumentException("driver url parsed result.size ==0"); http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/13cba188/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/MessagingEndPointFactory.java ---------------------------------------------------------------------- diff --git a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/MessagingEndPointFactory.java b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/MessagingEndPointFactory.java index 7d521ff..1dbc71d 100644 --- a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/MessagingEndPointFactory.java +++ b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/MessagingEndPointFactory.java @@ -19,7 +19,6 @@ package org.apache.openmessaging.internal; import org.apache.openmessaging.MessagingEndPoint; -import java.lang.reflect.InvocationTargetException; import java.util.List; import java.util.Map; import java.util.Properties; @@ -28,13 +27,15 @@ import java.util.Properties; * @author [email protected] */ public class MessagingEndPointFactory { - public static MessagingEndPoint createMessagingEndPoint(Map<String, List<String>> url, Properties properties) - throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, - InstantiationException, IllegalAccessException { + public static MessagingEndPoint createMessagingEndPoint(Map<String, List<String>> url, Properties properties) { List<String> driver = url.get(ServiceConstants.SPI_NAME); List<String> urls = url.get(ServiceConstants.URL_NAME); if (urls != null && urls.size() > 0) properties.put(ServiceConstants.URL, urls.get(0)); - return MessagingEndPointAdapter.instantiateMessagingEndPoint(driver.get(0), properties); + try { + return MessagingEndPointAdapter.instantiateMessagingEndPoint(driver.get(0), properties); + } catch (Exception e) { + throw new RuntimeException("createMessagingEndPoint exception", e); + } } } http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/13cba188/spec/code/messaging-user-level-samples/java/pom.xml ---------------------------------------------------------------------- diff --git a/spec/code/messaging-user-level-samples/java/pom.xml b/spec/code/messaging-user-level-samples/java/pom.xml new file mode 100644 index 0000000..67f4151 --- /dev/null +++ b/spec/code/messaging-user-level-samples/java/pom.xml @@ -0,0 +1,27 @@ +<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <groupId>org.apache</groupId> + <artifactId>open-standard-all</artifactId> + <version>1.0.0-SNAPSHOT</version> + <relativePath>../../pom.xml</relativePath> + </parent> + + <modelVersion>4.0.0</modelVersion> + <packaging>jar</packaging> + <artifactId>messaging-user-level-samples</artifactId> + <name>messaging-user-level-samples ${project.version}</name> + + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>messaging-user-level-api</artifactId> + <version>${project.version}</version> + </dependency> + </dependencies> +</project> http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/13cba188/spec/code/messaging-user-level-samples/java/src/main/java/org/apache/openmessaging/samples/Producer.java ---------------------------------------------------------------------- diff --git a/spec/code/messaging-user-level-samples/java/src/main/java/org/apache/openmessaging/samples/Producer.java b/spec/code/messaging-user-level-samples/java/src/main/java/org/apache/openmessaging/samples/Producer.java new file mode 100644 index 0000000..30a0d78 --- /dev/null +++ b/spec/code/messaging-user-level-samples/java/src/main/java/org/apache/openmessaging/samples/Producer.java @@ -0,0 +1,42 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.openmessaging.samples; + + +import org.apache.openmessaging.MessagingEndPoint; +import org.apache.openmessaging.MessagingEndPointManager; + +import java.nio.charset.Charset; + +public class Producer { + public static void main(String[] args) { + final MessagingEndPoint messagingEndPoint = MessagingEndPointManager.getMessagingEndPoint("openmessaging:rocketmq://localhost:10911/namespace"); + + final org.apache.openmessaging.Producer producer = messagingEndPoint.createProducer(); + + producer.start(); + + producer.send(messagingEndPoint.createBytesMessage("HELLO_TOPIC", "HELLO_BODY".getBytes(Charset.forName("UTF-8")))); + + Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { + @Override + public void run() { + producer.shutdown(); + } + })); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/13cba188/spec/code/pom.xml ---------------------------------------------------------------------- diff --git a/spec/code/pom.xml b/spec/code/pom.xml index fe83fc5..097431b 100644 --- a/spec/code/pom.xml +++ b/spec/code/pom.xml @@ -11,6 +11,7 @@ <modules> <module>messaging-user-level-api/java</module> + <module>messaging-user-level-samples/java</module> <module>messaging-wire-level-api</module> </modules> @@ -86,6 +87,11 @@ <dependencies> <dependency> <groupId>${project.groupId}</groupId> + <artifactId>messaging-user-level-samples</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> <artifactId>messaging-user-level-api</artifactId> <version>${project.version}</version> </dependency>
