rabbitmq订单模块
这个新模块允许您在Play上的RabbitMQ实例上消费和产生消息! 框架应用程序。
安装
play install rabbitmq
组态
module.rabbitmq=${play.path}/modules/rabbitmq-0.0.1
rabbitmq.host=localhost
rabbitmq.port=5672
rabbitmq.userName=guest
rabbitmq.password=guest
rabbitmq.vhost=/
rabbitmq.exchangeType=direct
rabbitmq.durable=true
rabbitmq.autoAck=false
rabbitmq.basicQos=true
定义将由队列使用的消息(只是一个简单的POJO)
public class SampleMessage implements Serializable {
/** The field1. */
private String field1;
/** The field2. */
private String field2;
/**
* Instantiates a new sample message.
*/
public SampleMessage() {
}
/**
* Instantiates a new sample message.
*
* @param field1 the field1
* @param field2 the field2
*/
public SampleMessage(String field1, String field2) {
super();
this.field1 = field1;
this.field2 = field2;
}
/**
* Gets the field1.
*
* @return the field1
*/
public String getField1() {
return field1;
}
/**
* Sets the field1.
*
* @param field1 the new field1
*/
public void setField1(String field1) {
this.field1 = field1;
}
/**
* Gets the field2.
*
* @return the field2
*/
public String getField2() {
return field2;
}
/**
* Sets the field2.
*
* @param field2 the new field2
*/
public void setField2(String field2) {
this.field2 = field2;
}
/**
* To String
*
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "SampleMessage [field1=" + field1 + ", field2=" + field2 + "]";
}
}
发布消息
public static void publish(String q) {
RabbitMQPublisher.publish("myQueue", new SampleMessage(q, q));
render(q);
}
创建消息使用者
@OnApplicationStart(async=true)
public class RabbitMQSampleConsumer extends RabbitMQConsumer {
/**
* Consume Message
*
* @see play.modules.rabbitmq.consumer.RabbitMQConsumer#consume(T)
*/
@Override
protected void consume(SampleMessage message) {
System.out.println("******************************");
System.out.println("* Message Consumed: " + message);
System.out.println("******************************");
}
/**
* Name of the Queue that this consumer will be listening to.
*
* @return the string
* @see play.modules.rabbitmq.consumer.RabbitMQConsumer#queue()
*/
@Override
protected String queue() {
return "myQueue";
}
/**
* Return message type.
*
* @return the message type
* @see play.modules.rabbitmq.consumer.RabbitMQConsumer#getMessageType()
*/
protected Class getMessageType() {
return SampleMessage.class;
}
}
*请注意,这是一场戏! 作业,因此您可以手动启动它,也可以使用Play提供的其他注释! 例如@On或@Every。 有关更多信息,请参见“ 异步作业”文档 。
Firehose –批量发布消息的另一种方法
@OnApplicationStart(async = true)
public class RabbitMQSampleFirehose extends RabbitMQFirehose {
/** The count. */
public int count = 0;
/**
* Get data to be loaded.
*
* @param n the n
* @return the data
* @throws Exception the exception
* @see play.modules.rabbitmq.producer.RabbitMQFirehose#getData(int)
*/
@Override
protected List getData(int n) throws Exception {
if ( count >= 10 ) {
return null;
}
List results = new ArrayList();
for (int i = 0; i < n; i++) {
results.add(new SampleMessage("field1", "field2"));
count++;
}
return results;
}
/**
* Batch Size - How many records we will select at the time?.
*
* @return the int
* @see play.modules.rabbitmq.producer.RabbitMQFirehose#batchSize()
*/
@Override
protected int batchSize() {
return 2;
}
/**
* Queue Name.
*
* @return the string
* @see play.modules.rabbitmq.producer.RabbitMQFirehose#queueName()
*/
@Override
protected String queueName() {
return "myQueue";
}
}
*请注意,这是一场戏! 作业,因此您可以手动启动它,也可以使用Play提供的其他注释! 例如@On或@Every。 有关更多信息,请参见“ 异步作业”文档 。 当然,该代码在Github上可用。
现在开始游戏!
参考: RabbitMQ Play模块! 我们的JCG合作伙伴 Felipe Oliveira在Geeks的 框架 完全在 。
相关文章:
翻译自: https://www.javacodegeeks.com/2011/04/rabbitmq-module-play-framework.html
rabbitmq订单模块