com.taobao.metamorphosis.client.producer
接口 MessageProducer

所有超级接口:
Shutdownable
所有已知子接口:
AsyncMessageProducer, XAMessageProducer
所有已知实现类:
AsyncMetaMessageProducer, OrderedMessageProducer, SimpleMessageProducer, SimpleXAMessageProducer

public interface MessageProducer
extends Shutdownable

消息生产者,线程安全,推荐复用

作者:
boyan

方法摘要
 void beginTransaction()
          开启一个事务并关联到当前线程,在事务内发送的消息将作为一个单元提交给服务器,要么全部发送成功,要么全部失败
 void commit()
          提交当前事务,将事务内发送的消息持久化,此方法仅能在beginTransaction之后调用
 PartitionSelector getPartitionSelector()
          返回本生产者的分区选择器
 int getTransactionTimeout()
          返回当前设置的事务超时时间,默认为0,表示永不超时
 boolean isOrdered()
          已过时。 
 void publish(String topic)
          发布topic,以便producer从zookeeper获取broker列表并连接,在发送消息前必须先调用此方法
 void rollback()
          回滚当前事务内所发送的任何消息,此方法仅能在beginTransaction之后调用
 SendResult sendMessage(Message message)
          发送消息
 SendResult sendMessage(Message message, long timeout, TimeUnit unit)
          发送消息,如果超出指定的时间内没有返回,则抛出异常
 void sendMessage(Message message, SendMessageCallback cb)
          异步发送消息,在默认时间内(3秒)回调callback,此模式下无法使用事务
 void sendMessage(Message message, SendMessageCallback cb, long time, TimeUnit unit)
          异步发送消息,在指定时间内回调callback,此模式下无法使用事务
 void setDefaultTopic(String topic)
          设置发送消息的默认topic,当发送的message的topic没有找到可用broker和分区的时候,选择这个默认topic指定的broker发送 。
 void setTransactionRequestTimeout(long time, TimeUnit timeUnit)
          Set transaction command request timeout.default is five seconds.
 void setTransactionTimeout(int seconds)
          设置事务超时时间,从事务开始计时,如果超过设定时间还没有提交或者回滚,则服务端将无条件回滚该事务。
 void shutdown()
          关闭生产者,释放资源
 

方法详细信息

publish

void publish(String topic)
发布topic,以便producer从zookeeper获取broker列表并连接,在发送消息前必须先调用此方法

参数:
topic -

setDefaultTopic

void setDefaultTopic(String topic)
设置发送消息的默认topic,当发送的message的topic没有找到可用broker和分区的时候,选择这个默认topic指定的broker发送 。调用本方法会自动publish此topic。

参数:
topic -

sendMessage

SendResult sendMessage(Message message)
                       throws MetaClientException,
                              InterruptedException
发送消息

参数:
message - 消息对象
返回:
发送结果
抛出:
MetaClientException - 客户端异常
InterruptedException - 响应中断

sendMessage

void sendMessage(Message message,
                 SendMessageCallback cb,
                 long time,
                 TimeUnit unit)
异步发送消息,在指定时间内回调callback,此模式下无法使用事务

参数:
message -
cb -
time -
unit -
从以下版本开始:
1.4

sendMessage

void sendMessage(Message message,
                 SendMessageCallback cb)
异步发送消息,在默认时间内(3秒)回调callback,此模式下无法使用事务

参数:
message -
cb -
从以下版本开始:
1.4

sendMessage

SendResult sendMessage(Message message,
                       long timeout,
                       TimeUnit unit)
                       throws MetaClientException,
                              InterruptedException
发送消息,如果超出指定的时间内没有返回,则抛出异常

参数:
message - 消息对象
timeout - 超时时间
unit - 超时的时间单位
返回:
发送结果
抛出:
MetaClientException - 客户端异常
InterruptedException - 响应中断

shutdown

void shutdown()
              throws MetaClientException
关闭生产者,释放资源

指定者:
接口 Shutdownable 中的 shutdown
抛出:
MetaClientException

getPartitionSelector

PartitionSelector getPartitionSelector()
返回本生产者的分区选择器

返回:

isOrdered

@Deprecated
boolean isOrdered()
已过时。 

返回本生产者发送消息是否有序,这里的有序是指发往同一个partition的消息有序。此方法已经废弃,总是返回false

返回:
true表示有序

beginTransaction

void beginTransaction()
                      throws MetaClientException
开启一个事务并关联到当前线程,在事务内发送的消息将作为一个单元提交给服务器,要么全部发送成功,要么全部失败

抛出:
MetaClientException - 如果已经处于事务中,则抛出TransactionInProgressException异常

setTransactionTimeout

void setTransactionTimeout(int seconds)
                           throws MetaClientException
设置事务超时时间,从事务开始计时,如果超过设定时间还没有提交或者回滚,则服务端将无条件回滚该事务。

参数:
seconds - 事务超时时间,单位:秒
抛出:
MetaClientException
另请参见:
beginTransaction(), rollback(), commit()

setTransactionRequestTimeout

void setTransactionRequestTimeout(long time,
                                  TimeUnit timeUnit)
Set transaction command request timeout.default is five seconds.

参数:
time -
timeUnit -

getTransactionTimeout

int getTransactionTimeout()
                          throws MetaClientException
返回当前设置的事务超时时间,默认为0,表示永不超时

返回:
事务超时时间,单位:秒
抛出:
MetaClientException

rollback

void rollback()
              throws MetaClientException
回滚当前事务内所发送的任何消息,此方法仅能在beginTransaction之后调用

抛出:
MetaClientException
另请参见:
beginTransaction()

commit

void commit()
            throws MetaClientException
提交当前事务,将事务内发送的消息持久化,此方法仅能在beginTransaction之后调用

抛出:
MetaClientException
另请参见:
beginTransaction()


Copyright © 2010–2013. All rights reserved.