1.java连接pulsar服务
是什么
Pulsar 是一个用于服务器到服务器的消息系统,具有多租户、高性能等优势。详见
安装
本文主练习怎么用,本地搭建了一个单机版,无非就是wget、tar、start这些命令,详见
Java客户端
1.引入GAV
<!-- https://mvnrepository.com/artifact/org.apache.pulsar/pulsar-client -->
<dependency>
<groupId>org.apache.pulsar</groupId>
<artifactId>pulsar-client</artifactId>
<version>2.8.0</version>
</dependency>
2.创建配置项
用于连接Pulsar等配置
Yml配置
pulsar:
url: 10.20.30.228:6650
# url: 10.20.30.228:6650,10.20.30.228:6651 #集群配置
新增配置类
package com.project.pulsar.conf; import org.apache.pulsar.client.api.PulsarClient;
import org.apache.pulsar.client.api.PulsarClientException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @Configuration
public class PulsarConf {
@Value("${pulsar.url}")
String url; @Bean
public PulsarClient pulsarFactory(){
PulsarClient client = null;
try {
client = PulsarClient.builder()
.serviceUrl("pulsar://"+url)
.build();
} catch (PulsarClientException e) {
}
return client;
}
}
3.验证测试
通过简单生产-消费测试配置是否正常
创建BaseController
注意,subscriptionName要保证唯一
package com.project.pulsar.base; import com.project.pulsar.conf.PulsarConf;
import org.apache.pulsar.client.api.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.HashMap;
import java.util.Map; @RestController
public class BaseController {
@Autowired
PulsarConf pulsarConf; /**
* 生产消息
* @param msg
* @throws PulsarClientException
*/
@GetMapping("/base/sendMsg")
public MessageId sendMsg(String msg) throws PulsarClientException {
PulsarClient pulsarFactory = pulsarConf.pulsarFactory(); Producer<byte[]> producer1 = pulsarFactory.newProducer()
.topic("my-topic") .create();
// 然后你就可以发送消息到指定的broker 和topic上:
return producer1.send(msg.getBytes());
} /**
* 手动执行获取消息
* @throws PulsarClientException
*/
@GetMapping("/base/comsumer")
public void comsumerByArtificial() throws PulsarClientException {
PulsarClient pulsarFactory = pulsarConf.pulsarFactory();
Consumer<byte[]> consumer = pulsarFactory.newConsumer()
.topic("my-topic")
.subscriptionName("my-subscription")
.subscribe();
Message<byte[]> receive = consumer.receive();
System.out.println(new String(receive.getData()));
consumer.acknowledge(receive);//确认消息被消费
consumer.close();
} /**
* 自动监听消费消息
* @throws PulsarClientException
*/
@Bean
public void comsumerByListener() throws PulsarClientException {
MessageListener myMessageListener = (consumer, msg) -> {
try {
System.out.println("Message received: " + new String(msg.getData()));
consumer.acknowledge(msg);
} catch (Exception e) {
consumer.negativeAcknowledge(msg);
}
};
PulsarClient pulsarFactory = pulsarConf.pulsarFactory();
pulsarFactory.newConsumer()
.topic("my-topic")
.subscriptionName("my-subscriptionByListener")
.messageListener(myMessageListener)
.subscribe();
} }生产消息
[127.0.0.1:9999/base/sendMsg?msg=Hello RB](http://127.0.0.1:9999/base/sendMsg?msg=Hello RB)
消费消息
- 在生产后,如果采用监听模式,会自动消费
- 在生产后,如果采用手动模式,执行127.0.0.1:9999/base/comsumer会被消费,如队列中无消费,则会阻塞等待
其他及代码下载
- topic不用显式创建,当消息发送或消费者建立连接时,如未创建会自动创建
- 代码见此Base包下
1.java连接pulsar服务的更多相关文章
- Java连接MQTT服务-wss方式
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- Java连接MQTT服务-ws方式
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- Java连接MQTT服务-tcp方式
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- Java 连接 Memcached 服务
原文:http://www.runoob.com/memcached/java-memcached.html mac下安装和配置Memcached:http://www.pchou.info/open ...
- Memcached常用语法与java连接服务
memcached常用语法及java使用方式 Author:SimpleWu Memcached 存储命令 Memcached set 命令用于将 value(数据值) 存储在指定的 key(键) 中 ...
- Java连接池详解
于共享资源,有一个很著名的设计模式:资源池(Resource Pool).该模式正是为了解决资源的频繁分配﹑释放所造成的问题.为解决我们的问题,可以采用数据库连接池技术.数据库连接池的基本思想就是为数 ...
- PHP学习笔记——PHP脚本和JAVA连接mysql数据库
环境 开发包:appserv-win32-2.5.10 服务器:Apache2.2 数据库:phpMyAdmin 语言:php5,java 平台:windows 10 java驱动:mysql-con ...
- java 微信公众服务平台 下发 模板消息
java 微信公众服务平台 下发 模板消息 (一).部分截图 (二).部分代码 (一).部分截图: (二).部分代码: //此处 给用户微信发消息... Map<String,String> ...
- 【JDBC】Java 连接 MySQL 基本过程以及封装数据库工具类
一. 常用的JDBC API 1. DriverManager类 : 数据库管理类,用于管理一组JDBC驱动程序的基本服务.应用程序和数据库之间可以通过此类建立连接.常用的静态方法如下 static ...
随机推荐
- Abp 审计模块源码解读
Abp 审计模块源码解读 Abp 框架为我们自带了审计日志功能,审计日志可以方便地查看每次请求接口所耗的时间,能够帮助我们快速定位到某些性能有问题的接口.除此之外,审计日志信息还包含有每次调用接口时客 ...
- 【Python爬虫】爬虫利器 requests 库小结
requests库 Requests 是一个 Python 的 HTTP 客户端库. 支持许多 HTTP 特性,可以非常方便地进行网页请求.网页分析和处理网页资源,拥有许多强大的功能. 本文主要介绍 ...
- <select><option></option></select> 操作
转载请注明来源:https://www.cnblogs.com/hookjc/ function FlySwapSelect(s1,s2,myvars,calldbclick){ var mSel1= ...
- winform 获得局域网内在线IP和计算机名,获取IP,多线程网络编程
转载请注明来源:https://www.cnblogs.com/hookjc/ using System; using System.Collections.Generic; using System ...
- 浅谈Java面向对象之抽象类(abstract)
java语言,声明类时格式为: abstract class Db{} 说明Db类为抽象类.抽象方法是说没有方法的实现(方法体)此方法为抽象方法,只有抽象类和接口中才可以有抽象方法.简而言之,含有抽象 ...
- Redis 源码简洁剖析 11 - 主 IO 线程及 Redis 6.0 多 IO 线程
Redis 到底是不是单线程的程序? 多 IO 线程的初始化 IO 线程运行函数 IOThreadMain 如何推迟客户端「读」操作? 如何推迟客户端「写」操作? 如何把待「读」客户端分配给 IO 线 ...
- Java中浅拷贝和深拷贝的区别
浅拷贝和深拷贝的定义: 浅拷贝: 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.即对象的浅拷贝会对"主"对象进行拷贝,但不会复制主对象 ...
- 《PHP程序员面试笔试宝典》——如何回答快速估算类问题?
如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 有些大企业的面试官,总喜欢出一些快速估算类问题,对他们而言,这些问题只是手段,不是目的,能够得到一个满意的结果固然是他们 ...
- Solution -「AGC 036D」「AT 5147」Negative Cycle
\(\mathcal{Descriprtion}\) Link. 在一个含 \(n\) 个结点的有向图中,存在边 \(\lang i,i+1,0\rang\),它们不能被删除:还有边 \(\l ...
- Solution -「CF 1370F2」The Hidden Pair (Hard Version)
\(\mathcal{Description}\) Link (hard) & Link (easy). 这是一道交互题. 给定一棵 \(n\) 个结点的树,其中有两个是特殊结点. ...