同步操作将从 攀峰科技/cgyun-tiny-pulsar 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Pulsar是一个用于服务端到服务端的消息中间件,具有多租户、高性能等优势。Pulsar最初由Yahoo开发,目前由Apache软件基金会管理。Pulsar采用发布-订阅的设计模式,Producer发布消息到Topic,Consumer订阅Topic、处理Topic中的消息。
我们选择通过docker安装
docker run -it -p 6650:6650 -p 8091:8080 \
--mount source=pulsardata,target=/data/pulsar/data \
--mount source=pulsarconf,target=/data/pulsar/conf \
-e advertisedAddress=pulsar-standalone \
--name pulscar-standalone \
--hostname pulsar-standalone \ apachepulsar/pulsar:2.8.0 \
sh -c "bin/apply-config-from-env.py conf/standalone.conf&&bin/pulsar standalone -nfw -nss"
下载完成后运行pulsar-manager容器,从9527端口可以访问Web页面;
docker run -d -it --name pulsar-manager\
-p 9527:9527 -p 7750:7750 \
-e SPRING_CONFIGURATION_FILE=/pulsar-manager/pulsar-manager/application.properties \
--link pulsar-standalone \
apachepulsar/pulsar-manager:v0.2.0
运行成功后,我们刚开始无法访问,需要创建管理员账号,这里创建账号为admin:apachepulsar:
CSRF_TOKEN=$(curl http://localhost:7750/pulsar-manager/csrf-token)
curl \ -H "X-XSRF-TOKEN: $CSRF_TOKEN" \
-H "Cookie: XSRF-TOKEN=$CSRF_TOKEN;" \
-H 'Content-Type: application/json' \
-X PUT http://localhost:7750/pulsar-manager/users/superuser \
-d '{"name": "admin", "password": "apachepulsar", "description": "test", "email": "username@test.org"}'
输入用户名字密码,进去可视化管理后台: 可以创建消息主题
一般在生成环境当中,我们不会手动创建消息主题,一般都会结合项目自动创建,接下来我们测试下Pulsar结合SpringBoot的使用
Pulsar结合SpringBoot使用也是非常简单的,我们可以使用Pulsar官方的Java SDK,也可以使用第三方的SpringBoot Starter。这里使用Starter,非常简单!
首先在pom.xml
中添加Pulsar相关依赖;
<!--SpringBoot整合Pulsar-->
<dependency>
<groupId>io.github.majusko</groupId>
<artifactId>pulsar-java-spring-boot-starter</artifactId>
<version>1.0.4</version>
</dependency>
然后在application.yml
中添加Pulsar的Service URL
配置
server:
port: 8088
pulsar:
service-url: pulsar://121.xxx.212.xx:6650
再添加Pulsar的Java配置,声明两个Topic,并确定好发送的消息类型;
@Configuration
public class PulsarConfig {
@Bean
public ProducerFactory producerFactory() {
return new ProducerFactory()
.addProducer("bootTopic", MessageDto.class)
.addProducer("stringTopic", String.class);
}
}
创建Pulsar生产者,往Topic中发送消息,这里可以发现Pulsar是支持直接发送消息对象的;
@Component
public class PulsarProducer {
@Autowired
private PulsarTemplate<MessageDto> template;
public void send(MessageDto message){
try {
template.send("bootTopic",message);
} catch (PulsarClientException e) {
e.printStackTrace();
}
}
}
创建Pulsar消费者,从Topic中获取并消费消息,也是可以直接获取到消息对象的;
@Slf4j
@Component
public class PulsarRealConsumer {
@PulsarConsumer(topic="bootTopic", clazz= MessageDto.class)
public void consume(MessageDto message) {
log.info("PulsarRealConsumer consume id:{},content:{}",message.getId(),message.getContent());
}
}
添加测试接口,调用生产者发送消息;
@Api(tags = "PulsarController", description = "Pulsar功能测试")
@Controller
@RequestMapping("/pulsar")
public class PulsarController {
@Autowired
private PulsarProducer pulsarProducer;
@ApiOperation("发送消息")
@RequestMapping(value = "/sendMessage", method = RequestMethod.POST)
@ResponseBody
public CommonResult sendMessage(@RequestBody MessageDto message) {
pulsarProducer.send(message);
return CommonResult.success(null);
}
}
启动sringboot项目,会自动连接pulsar,成功后会并且打印配置信息,如果失败则项目会自动停止。
此时我们也可以通过管理后台查看注册的主题和当前的消费者信息;
在Swagger中调用接口进行测试;
调用成功后,控制台将输入如下信息,表示消息已经被成功接收并消费了。
2021-08-14 16:49:53.740 INFO 8169:
PulsarRealConsumer consume id:0,content:我是panda
Pulsar对Docker支持无疑是更好的,官方文档也更全。对比下图形化工具Pulsar Manager
和Kafka Eagle
,Pulsar的图形化工具感觉有点简陋。介于目前雅虎、腾讯、360等互联网大厂都在使用Pulsar,Pulsar的性能和稳定性应该是很不错的!
springboot+消息中间件pulsar,可视化管理+文档贼全,准备起飞
Pulsar官方文档:https://pulsar.apache.org/docs/en/standalone-docker/ SpringBoot Starter官方文档:https://github.com/majusko/pulsar-java-spring-boot-starter 再见RocketMQ!全新一代消息中间件,带可视化管理,文档贼全! https://blog.csdn.net/zhenghongcs/article/details/118927256Apache
Pulsar 上手实战第二期:容器部署实战 https://www.bilibili.com/video/BV1nq4y1H7pW?from=search&seid=9047391456949428020
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。