/**
* $Id: DefaultMQProducer.java 1831 2013-05-16 01:39:51Z shijia.wxr $
*/
package com.alibaba.rocketmq.client.producer;
import java.util.List;
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
import com.alibaba.rocketmq.client.MQClientConfig;
import com.alibaba.rocketmq.client.QueryResult;
import com.alibaba.rocketmq.client.exception.MQBrokerException;
import com.alibaba.rocketmq.client.exception.MQClientException;
import com.alibaba.rocketmq.client.impl.producer.DefaultMQProducerImpl;
import com.alibaba.rocketmq.common.Message;
import com.alibaba.rocketmq.common.MessageExt;
import com.alibaba.rocketmq.common.MixAll;
import com.alibaba.rocketmq.common.MessageQueue;
import com.alibaba.rocketmq.common.TopicFilterType;
import com.alibaba.rocketmq.remoting.exception.RemotingException;
/**
* ��Ϣ�����ߣ��ʺ�ʹ��spring��ʼ��
*
* @author vintage.wang@gmail.com shijia.wxr@taobao.com
*/
public class DefaultMQProducer implements MQProducer {
/**
* �ͻ��˹������ã���������
*/
private MQClientConfig mQClientConfig = new MQClientConfig();
/**
* һ�㷢��ͬ����Ϣ��Producer����Ϊͬһ��Group��Ӧ�ñ������ã�����֤����Ψһ
*/
private String producerGroup = MixAll.DEFAULT_PRODUCER_GROUP;
/**
* ֧���ڷ�����Ϣʱ�����Topic�����ڣ��Զ�����Topic������Ҫָ��Key
*/
private String createTopicKey = MixAll.DEFAULT_TOPIC;
/**
* ������Ϣ���Զ�����Topicʱ��Ĭ�϶�����
*/
private volatile int defaultTopicQueueNums = 4;
/**
* ������Ϣ��ʱ����������
*/
private int sendMsgTimeout = 10000;
/**
* Message Body��С������ֵ����ѹ��
*/
private int compressMsgBodyOverHowmuch = 1024 * 4;
/**
* ��Ϣ�Ѿ��ɹ�д��Master������ˢ�̳�ʱ����ͬ����Slaveʧ�ܣ�����������һ��Broker����������Ĭ��ֵ<br>
* ˳����Ϣ��Ч
*/
private boolean retryAnotherBrokerWhenNotStoreOK = false;
/**
* �����Ϣ��С��Ĭ��512K
*/
private int maxMessageSize = 1024 * 512;
protected final DefaultMQProducerImpl defaultMQProducerImpl = new DefaultMQProducerImpl(this);
public DefaultMQProducer() {
}
public DefaultMQProducer(final String producerGroup) {
this.producerGroup = producerGroup;
}
@Override
public void start() throws MQClientException {
this.defaultMQProducerImpl.start();
}
@Override
public void shutdown() {
this.defaultMQProducerImpl.shutdown();
}
@Override
public SendResult send(Message msg) throws MQClientException, RemotingException, MQBrokerException,
InterruptedException {
return this.defaultMQProducerImpl.send(msg);
}
@Override
public SendResult send(Message msg, MessageQueueSelector selector, Object arg) throws MQClientException,
RemotingException, MQBrokerException, InterruptedException {
return this.defaultMQProducerImpl.send(msg, selector, arg);
}
@Override
public List<MessageQueue> fetchPublishMessageQueues(String topic) throws MQClientException {
return this.defaultMQProducerImpl.fetchPublishMessageQueues(topic);
}
@Override
public long searchOffset(MessageQueue mq, long timestamp) throws MQClientException {
return this.defaultMQProducerImpl.searchOffset(mq, timestamp);
}
@Override
public long getMaxOffset(MessageQueue mq) throws MQClientException {
return this.defaultMQProducerImpl.getMaxOffset(mq);
}
@Override
public long getMinOffset(MessageQueue mq) throws MQClientException {
return this.defaultMQProducerImpl.getMinOffset(mq);
}
@Override
public long getEarliestMsgStoreTime(MessageQueue mq) throws MQClientException {
return this.defaultMQProducerImpl.getEarliestMsgStoreTime(mq);
}
@Override
public MessageExt viewMessage(String msgId) throws RemotingException, MQBrokerException,
InterruptedException, MQClientException {
return this.defaultMQProducerImpl.viewMessage(msgId);
}
@Override
public SendResult send(Message msg, MessageQueue mq) throws MQClientException, RemotingException,
MQBrokerException, InterruptedException {
return this.defaultMQProducerImpl.send(msg, mq);
}
@Override
public void createTopic(String key, String newTopic, int queueNum, TopicFilterType topicFilterType,
boolean order) throws MQClientException {
this.defaultMQProducerImpl.createTopic(key, newTopic, queueNum, topicFilterType, order);
}
@Override
public QueryResult queryMessage(String topic, String key, int maxNum, long begin, long end)
throws MQClientException, InterruptedException {
return this.defaultMQProducerImpl.queryMessage(topic, key, maxNum, begin, end);
}
@Override
public void send(Message msg, SendCallback sendCallback) throws MQClientException, RemotingException,
InterruptedException {
this.defaultMQProducerImpl.send(msg, sendCallback);
}
@Override
public void sendOneway(Message msg) throws MQClientException, RemotingException, InterruptedException {
this.defaultMQProducerImpl.sendOneway(msg);
}
@Override
public void send(Message msg, MessageQueue mq, SendCallback sendCallback) throws MQClientException,
RemotingException, InterruptedException {
this.defaultMQProducerImpl.send(msg, mq, sendCallback);
}
@Override
public void sendOneway(Message msg, MessageQueue mq) throws MQClientException, RemotingException,
InterruptedException {
this.defaultMQProducerImpl.sendOneway(msg, mq);
}
@Override
public void send(Message msg, MessageQueueSelector selector, Object arg, SendCallback sendCallback)
throws MQClientException, RemotingException, InterruptedException {
this.defaultMQProducerImpl.send(msg, selector, arg, sendCallback);
}
@Override
public void sendOneway(Message msg, MessageQueueSelector selector, Object arg) throws MQClientException,
RemotingException, InterruptedException {
this.defaultMQProducerImpl.sendOneway(msg, selector, arg);
}
public MQClientConfig getMQClientConfig() {
return mQClientConfig;
}
public void setMQClientConfig(MQClientConfig mQClientConfig) {
this.mQClientConfig = mQClientConfig;
}
public String getProducerGroup() {
return producerGroup;
}
public void setProducerGroup(String producerGroup) {
this.producerGroup = producerGroup;
}
public String getCreateTopicKey() {
return createTopicKey;
}
public void setCreateTopicKey(String createTopicKey) {
this.createTopicKey = createTopicKey;
}
public int getSendMsgTimeout() {
return sendMsgTimeout;
}
public void setSendMsgTimeout(int sendMsgTimeout) {
this.sendMsgTimeout = sendMsgTimeout;
}
public int getCompressMsgBodyOverHowmuch() {
return compressMsgBodyOverHowmuch;
}
public void setCompressMsgBodyOverHowmuch(int compressMsgBodyOverHowmuch) {
this.compressMsgBodyOverHowmuch = compressMsgBodyOverHowmuch;
}
public DefaultMQProducerImpl getDefaultMQProducerImpl() {
return defaultMQProducerImpl;
}
public boolean isRetryAnotherBrokerWhenNotStoreOK() {
return retryAnotherBrokerWhenNotStoreOK;
}
public void setRetryAnotherBrokerWhenNotStoreOK(boolean retryAnotherBrokerWhenNotStoreOK) {
this.retryAnotherBrokerWhenNotStoreOK = retryAnotherBrokerWhenNotStoreOK;
}
public int getMaxMessageSize() {
return maxMessageSize;
}
public void setMaxMessageSize(int maxMessageSize) {
this.maxMessageSize = maxMessageSize;
}
public int getDefaultTopicQueueNums() {
return defaultTopicQueueNums;
}
public void setDefaultTopicQueueNums(int defaultTopicQueueNums) {
this.defaultTopicQueueNums = defaultTopicQueueNums;
}
public SendResult sendMessageInTransaction(Message msg, LocalTransactionExecuter tranExecuter)
throws MQClientException {
throw new NotImplementedException();
}
}