docker pull rocketmqinc/rocketmq
docker run -d -p 9876:9876 --name mqnamesrv -e " MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq sh mqnamesrv
echo " brokerIP1=192.168.63.2" > broker.properties
docker run -d -p 10911:10911 -p 10909:10909 -v /root/broker.properties:/opt/rocketmq-4.4.0/bin/broker.properties --name mqbroker --link mqnamesrv -e " NAMESRV_ADDR=mqnamesrv:9876" -e " MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c broker.properties
docker run --link mqnamesrv -e " JAVA_OPTS=-Drocketmq.namesrv.addr=mqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -t styletang/rocketmq-console-ng
3.2 创建maven目录结构,以及pom.xml文件
<parent >
<groupId >org.springframework.boot</groupId >
<artifactId >spring-boot-starter-parent</artifactId >
<version >2.0.5.RELEASE</version >
<relativePath />
</parent >
3.4 pom.xml文件中加入springboot-starter依赖
<dependencies >
<dependency >
<groupId >org.springframework.boot</groupId >
<artifactId >spring-boot-starter-web</artifactId >
</dependency >
<dependency >
<groupId >org.apache.rocketmq</groupId >
<artifactId >rocketmq-client</artifactId >
<version >4.3.0</version >
</dependency >
</dependencies >
3.5 pom.xml文件中加入maven-springboot打包插件
<build >
<plugins >
<plugin >
<groupId >org.springframework.boot</groupId >
<artifactId >spring-boot-maven-plugin</artifactId >
</plugin >
</plugins >
</build >
import org .springframework .boot .SpringApplication ;
import org .springframework .boot .autoconfigure .SpringBootApplication ;
@ SpringBootApplication
public class Application {
public static void main (String [] args ) {
SpringApplication .run (Application .class , args );
}
}
import org .apache .rocketmq .client .producer .DefaultMQProducer ;
import org .springframework .beans .factory .annotation .Value ;
import org .springframework .context .annotation .Bean ;
import org .springframework .context .annotation .Configuration ;
@ Configuration
public class RocketMQProducer {
@ Value ("${rocketmq.producer.groupName}" )
private String groupName ;
@ Value ("${rocketmq.namesrvAddr}" )
private String nameserAddr ;
@ Bean (initMethod = "start" , destroyMethod = "shutdown" )
public DefaultMQProducer getRocketMQProducer () {
DefaultMQProducer producer = new DefaultMQProducer (groupName );
producer .setNamesrvAddr (nameserAddr );
producer .setVipChannelEnabled (false );
return producer ;
}
}
import com .oven .producer .RocketMQProducer ;
import org .apache .rocketmq .client .producer .DefaultMQProducer ;
import org .apache .rocketmq .common .message .Message ;
import org .springframework .web .bind .annotation .RequestMapping ;
import org .springframework .web .bind .annotation .RestController ;
import javax .annotation .Resource ;
@ RestController
public class DemoController {
@ Resource
private RocketMQProducer rocketMQProducer ;
@ RequestMapping ("/send" )
public String send (String msg ) {
DefaultMQProducer producer = rocketMQProducer .getRocketMQProducer ();
Message message = new Message ("springboot-rocketmq" , "test" , msg .getBytes ());
try {
producer .send (message );
} catch (Exception e ) {
e .printStackTrace ();
}
return "发送成功" ;
}
}
import org .apache .rocketmq .client .consumer .DefaultMQPushConsumer ;
import org .apache .rocketmq .client .exception .MQClientException ;
import org .springframework .beans .factory .annotation .Value ;
import org .springframework .context .annotation .Bean ;
import org .springframework .context .annotation .Configuration ;
import javax .annotation .Resource ;
@ Configuration
public class RocketMQConsumer {
@ Resource
private MessageListener messageListener ;
@ Value ("${rocketmq.namesrvAddr}" )
private String namesrvAddr ;
@ Value ("${rocketmq.consumer.groupName}" )
private String groupName ;
@ Bean (initMethod = "start" , destroyMethod = "shutdown" )
public DefaultMQPushConsumer getRocketMQConsumer () {
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer (groupName );
consumer .setNamesrvAddr (namesrvAddr );
consumer .setVipChannelEnabled (false );
consumer .registerMessageListener (messageListener );
try {
consumer .subscribe ("springboot-rocketmq" , "test" );
} catch (MQClientException e ) {
e .printStackTrace ();
}
return consumer ;
}
}
import org .apache .rocketmq .client .consumer .listener .ConsumeConcurrentlyContext ;
import org .apache .rocketmq .client .consumer .listener .ConsumeConcurrentlyStatus ;
import org .apache .rocketmq .client .consumer .listener .MessageListenerConcurrently ;
import org .apache .rocketmq .common .message .MessageExt ;
import org .springframework .stereotype .Component ;
import java .util .List ;
@ Component
public class MessageListener implements MessageListenerConcurrently {
@ Override
public ConsumeConcurrentlyStatus consumeMessage (List <MessageExt > list , ConsumeConcurrentlyContext consumeConcurrentlyContext ) {
MessageExt ext = list .get (0 );
String msg = new String (ext .getBody ());
System .out .printf ("消费者接受到消息:%s" , msg );
return ConsumeConcurrentlyStatus .CONSUME_SUCCESS ;
}
}
rocketmq.namesrvAddr =192.168.63.2:9876
rocketmq.producer.groupName =producer
rocketmq.consumer.groupName =consumer