消息队列-metaq

zookeeper和metaq客户端请自行搜索....

使用方式如下:

metaq maven依赖

<dependency>
	<groupId>com.taobao.metamorphosis</groupId>
	<artifactId>metamorphosis-client</artifactId>
	<version>1.4.6.2</version>
</dependency>

metaq 配置

dubbo.registry.address=127.0.0.1:2181
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">

	<!-- metaq producer -->
	<bean id="sessionFactory" class="com.taobao.metamorphosis.client.extension.spring.MetaqMessageSessionFactoryBean">
		<property name="zkConnect" value="${metaq.registry.address}" />
		<property name="zkSessionTimeoutMs" value="30000" />
		<property name="zkConnectionTimeoutMs" value="30000" />
		<property name="zkSyncTimeMs" value="5000" />
	</bean>
	<!-- 默认消息转换对象,生产和消费必须是同一个类,改用下面自定义的 -->
	<!-- <bean class="com.taobao.metamorphosis.client.extension.spring.JavaSerializationMessageBodyConverter" /> -->
	<bean id="messageBodyConverter" class="com.pay.utils.MetaqMessageConverter" />
	<bean id="metaqTemplate" class="com.taobao.metamorphosis.client.extension.spring.MetaqTemplate">
		<property name="messageSessionFactory" ref="sessionFactory" />
		<property name="messageBodyConverter" ref="messageBodyConverter" />
	</bean>

	<!-- metaq customer -->
	<bean id="topic1" class="com.taobao.metamorphosis.client.extension.spring.MetaqTopic">
		<!-- 同一个group(包括集群)下只有一个消费者 -->
		<property name="group" value="group1" />
		<property name="topic" value="test" />
		<property name="maxBufferSize" value="16384" />
	</bean>
	<bean id="topic1Listener" class="com.pay.metaq.MetaqTestListener">
		<property name="processThreads" value="10" />
	</bean>

	<!-- metaq container -->
	<bean id="listenerContainer" class="com.taobao.metamorphosis.client.extension.spring.MessageListenerContainer">
		<property name="messageSessionFactory" ref="sessionFactory" />
		<property name="messageBodyConverter" ref="messageBodyConverter" />
		<property name="subscribers">
			<map>
				<entry key-ref="topic1" value-ref="topic1Listener" />
				<!-- ... -->
			</map>
		</property>
	</bean>
</beans>

metaq consumer

package com.pay.metaq;

import com.alibaba.fastjson.JSON;
import com.taobao.metamorphosis.client.extension.spring.DefaultMessageListener;
import com.taobao.metamorphosis.client.extension.spring.MetaqMessage;

public class MetaqTestListener extends DefaultMessageListener<String> {

  @Override
  public void onReceiveMessages(MetaqMessage<String> msg) {
    String y = msg.getBody();
    System.out.println(JSON.toJSONString(msg));
    System.out.println(y);
  }

}

metaq producer

package com.pay.tests.combine;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Date;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.taobao.metamorphosis.client.extension.spring.MessageBuilder;
import com.taobao.metamorphosis.client.extension.spring.MetaqTemplate;

import api.pay.combine.dto.PayItemReqDto;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/notenv/applicationContext.xml")
public class MetaqTest {

  @Autowired
  private MetaqTemplate metaqTemplate;

  @Test
  public void test01() throws Exception {
    PayItemReqDto dto = new PayItemReqDto();
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    String line = null;
    while ((line = reader.readLine()) != null) {

      dto.setOrderNo("order001");
      dto.setTotalFee(1);
      dto.setSpName("spname001");
      dto.setTimeOut(new Date());
      dto.setSpDetail(line);

      metaqTemplate.send(MessageBuilder.withTopic("test").withBody(dto));
    }
  }
}
时间: 2024-10-31 17:17:41

消息队列-metaq的相关文章

消息队列(RabbitMQ、zorneQ、metaQ、activeMQ)

术语: AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计. JMS,Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信 消息队列对比

消息队列设计精要【转】

消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步RPC的主要手段之一. 当今市面上有很多主流的消息中间件,如老牌的ActiveMQ.RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify.MetaQ.RocketMQ等. 本文不会一一介绍这些消息队列的所有特性,而是探讨一下自主开发设计一个消息队列时,你需要思考和设计的重要方面.过程中我们会参考这些成熟消息队列的很多重要思想. 本文首先会阐述什么时候你需要

RocketMQ 消息队列单机部署及使用

转载请注明来源:http://blog.csdn.net/loongshawn/article/details/51086876 相关文章: <RocketMQ 消息队列单机部署及使用> < java编写简单消息队列.实现高德坐标变形服务> 0 RocketMQ简单介绍 0.1 介绍 RocketMQ是一个消息中间件. 消息中间件中有两个角色:消息生产者和消息消费者.RocketMQ里相同有这两个概念.消息生产者负责创建消息并发送到RocketMQ服务器.RocketMQ服务器会将

java消息队列使用场景

http://blog.163.com/sir_876/blog/static/11705223201332444647261/ 目前能用到的比较不错的消息队列组件 ,kafka,activeMq, ibm Mq,淘宝MetaQ 1,多系统之间消息通知,分布式事务,订单,抢单 2,数据库binlog复制,数据复制 3,日志同步,大量动作日志数据记录,用作行为分析 4,做分布式延迟队列,定时器 5,广播通知,比如通知cache失效等情况 kafka开发相关 http://www.aboutyun.

初识消息队列

一对一 点对点模型特性:消息只有在处理成功后才会删除,失败时不会删除,这样下次取时,队列中还会有 发布-订阅模型特性(3.可以理解为过期时间) 发布订阅模型(3非持久订阅:保持长链接---持久订阅:消费者产生的消息,会把消息存在消息中间件中,当消费者宕机后,消息中间件会不停的向消费者发送信息,直到成功接收) 交易系统,对实时性较高,所以用推的方式. 延迟消息发送和暂存(通过tcp-copy方式复制一份消息队列,复制出的消息队列先不释放,暂存队列中,可以很好的模拟用户并发,再一次性释放出来)pul

消息队列设计精要(转)

消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步RPC的主要手段之一.当今市面上有很多主流的消息中间件,如老牌的ActiveMQ.RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify.MetaQ.RocketMQ等.本文不会一一介绍这些消息队列的所有特性,而是探讨一下自主开发设计一个消息队列时,你需要思考和设计的重要方面.过程中我们会参考这些成熟消息队列的很多重要思想.本文首先会阐述什么时候你需要一个消

Python 番外 消息队列设计精要

消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步RPC的主要手段之一.当今市面上有很多主流的消息中间件,如老牌的ActiveMQ.RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify.MetaQ.RocketMQ等.本文不会一一介绍这些消息队列的所有特性,而是探讨一下自主开发设计一个消息队列时,你需要思考和设计的重要方面.过程中我们会参考这些成熟消息队列的很多重要思想.本文首先会阐述什么时候你需要一个消

消息队列设计精要(转载)

消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步RPC的主要手段之一.当今市面上有很多主流的消息中间件,如老牌的ActiveMQ.RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify.MetaQ.RocketMQ等.本文不会一一介绍这些消息队列的所有特性,而是探讨一下自主开发设计一个消息队列时,你需要思考和设计的重要方面.过程中我们会参考这些成熟消息队列的很多重要思想.本文首先会阐述什么时候你需要一个消

【转】消息队列设计精要

介绍的比较全面,可以借鉴学习:原文连接:http://tech.meituan.com/mq-design.html 消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步RPC的主要手段之一.当今市面上有很多主流的消息中间件,如老牌的ActiveMQ.RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify.MetaQ.RocketMQ等.本文不会一一介绍这些消息队列的所有特性,而是探讨一下自主开发设计一个消息