分布式消息队列中间件系列研究之阿堂教程(基础篇-Local模式)
来源:互联网 发布:js url encode utf8 编辑:程序博客网 时间:2024/06/05 08:25
分区跟消费者的负载均衡机制有很大关系,具体见集群和负载均衡。
就是meta的服务端或者说服务器,在消息中间件中也通常称为broker。
消费者可以是多个消费者共同消费一个topic下的消息,每个消费者消费部分消息。这些消费者就组成一个分组,拥有同一个分组名称,通常也称为消费者集群
为了说明metaq的使用,阿堂附上一个测试demo与大家分享,关于集群模式,阿堂会在下篇文章中继续分享
下面是阿堂在Local单机模式的测试效果图
1.安装,启动zookeeper
2.安装启动metaq服务器
3.在myeclipse编写代码测试
测试代码如下
public class Productor { public static void main(String[] args) throws Exception { final MetaClientConfig metaClientConfig = new MetaClientConfig(); final ZKConfig zkConfig = new ZKConfig(); zkConfig.zkConnect = "192.168.1.101:2181"; metaClientConfig.setZkConfig(zkConfig); MessageProducer producer = sessionFactory.createProducer(); final String topic = "test"; producer.publish(topic); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String line = "网络时空(阿堂)"; while ((line = reader.readLine()) != null) { // send message SendResult sendResult = producer.sendMessage(new Message(topic, line.getBytes())); // check result if (!sendResult.isSuccess()) { System.err.println("Send message failed,error message:" + sendResult.getErrorMessage()); } else { System.out.println("Send message successfully,sent to " + sendResult.getPartition()); // System.out.println("分区 ="+sendResult.getPartition().getPartition());// System.out.println("broker ="+sendResult.getPartition().getBrokerId()); } } } } ---------------------------------------------------------------public class Consumer { public static void main(String[] args) throws Exception { final MetaClientConfig metaClientConfig = new MetaClientConfig(); final ZKConfig zkConfig = new ZKConfig(); zkConfig.zkConnect = "192.168.1.101:2181"; metaClientConfig.setZkConfig(zkConfig); MessageSessionFactory sessionFactory = new MetaMessageSessionFactory(metaClientConfig); final String topic = "test"; final String group = "meta-example"; MessageConsumer consumer = sessionFactory.createConsumer(new ConsumerConfig(group)); consumer.subscribe(topic, 1024 * 100, new MessageListener() { public void recieveMessages(Message message) { System.out.println("Receive message " + new String(message.getData())); // System.out.println("分区 = "+message.getPartition().getPartition());// System.out.println("broker = "+message.getPartition().getBrokerId()); } public Executor getExecutor() { return null; } }); consumer.completeSubscribe(); } }
- 分布式消息队列中间件系列研究之阿堂教程(基础篇-Local模式)
- 分布式消息队列中间件系列研究之阿堂教程(进阶篇)
- 分布式消息队列(消息中间件)
- 分布式之消息中间件
- 消息队列系列之分布式消息队列Kafka
- ActiveMQ消息中间件之队列模式和主题模式详解
- 分布式系统基础-消息队列之JMS
- 分布式系统基础-消息队列之ActiveMQ
- 分布式系统基础-消息队列之RabbitMQ
- 分布式系统基础-消息队列之Kafka
- 大数据系列教程_分布式消息队列kafka
- 分布式之分布式事务的消息队列模式实现
- 分布式消息中间件MQ开发教程
- 分布式消息中间件RocketMQ学习教程①
- 分布式之消息队列
- 分布式消息队列研究及实践
- 消息队列中间件之ActiveMQ初识
- Apache Kafka 分布式消息队列中间件安装与配置
- Linux Cgroups概念
- C++ ostream类包含的一个简单的用于控制格式的成员函数setf precision
- 拖动缓动效果 代码实现
- qsort的用法
- 深度学习在图像识别中的应用--学习笔记4
- 分布式消息队列中间件系列研究之阿堂教程(基础篇-Local模式)
- Linux Zram的概念
- Android人生的再一次转变
- vi中常用命令
- 3 sum
- 黑马程序员--泛型和Collections使用
- [Linux中断]中断数据结构以及ARM处理中断流程
- Android层次结构
- Java 文件操作