Documentation
¶
Index ¶
- func HandleAck(msg *message.MsgPayload, listener provider.MessageListener) (*message.MsgPayload, error)
- func HandleNew(msg *message.MsgPayload, listener provider.MessageListener) (*message.MsgPayload, error)
- type Amq
- type Client
- func (c *Client) AddProcessor(processors ...Processor)
- func (c *Client) BuildQueueName(systemId string) string
- func (c *Client) BuildQueueNameByPartition(systemId string, partition int) string
- func (c *Client) Close()
- func (c *Client) IsMultiplePartition() bool
- func (c *Client) Send(msg interface{}) error
- func (c *Client) Start(partitions []int) (closer func(), err error)
- type ClientConfig
- type Config
- type Processor
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func HandleAck ¶
func HandleAck(msg *message.MsgPayload, listener provider.MessageListener) (*message.MsgPayload, error)
*
- 处理收到的单向/双向事务消息的应答消息。 *
- @param message
- @param listener
- @throws AMQException
func HandleNew ¶
func HandleNew(msg *message.MsgPayload, listener provider.MessageListener) (*message.MsgPayload, error)
*
- 处理收到的新消息(包括通知消息和事务消息)。 *
- @param message
- @param listener
- @throws AMQException
Types ¶
type Amq ¶
type Amq struct {
// contains filtered or unexported fields
}
*
- AMQ引擎定义,允许各系统之间通过AMQ进行消息异步交互,默认情况下系统未开启AMQ功能,如果本系统有需要使用需要在配置
- 文件<b>/base/amq</b>中进行如下配置方可开启:
- <pre>
- amq.enabled=true
- </pre>
- <p>
- 同时,业务系统对每个AMQ节点需要注册一个或多个{@link Processor}消息处理器,否则收到的消息由于无法找到对应的
- 消息处理器而会被忽略,从而对业务造成影响,业务系统需要实现上述接口并在启动{@link Client}之前手动注册消息处理
- 器到对应的客户端中。
- </p>
- <p>
- 另外,对于不同的AMQ节点需要在配置中心进行如下的配置,配置的key为:<b>/system/base/amq/{node}</b>,其中{node}
- 为节点的唯一标示,其数据格式可参看{@link AMQClient}的配置说明。
- </p>
func Engine ¶
func Engine(conf configuration.Configuration, systemId string) (amq *Amq)
*
- 获取企业消息总线(AMQ)管理引擎的唯一实例。
- @param config
- @return
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
func (*Client) AddProcessor ¶
*
- 为当前客户端添加一个或多个消息处理器,需要确保该方法在{@link #start()}方法之前调用,否则系统会抛出异常。 *
- @param processors
func (*Client) BuildQueueName ¶
*
- 使用当前客户端构建一个amq消息的目标队列名称,目标队列名称满足格式:sys_amq_{systemId}_{node},
- 其中{systemId}为目标系统的四位数数字ID,{node}为目标系统监听的amq节点标示(参考{@link AMQNode}。 *
- @param destSystemId 目标系统ID
- @param destNode 目标AMQ节点
- @return
func (*Client) BuildQueueNameByPartition ¶
*
- 等同{@link #buildQueueName(string)}方法,唯一不同的是如果节点配置为了多分区则需要指定分区编号
- 来依次构建每个分区的队列,分区编号从0开始。 *
- @param destSystemId
- @param destNode
- @param partition
- @return
func (*Client) Send ¶
*
- 发送新消息到AMQ中,这里是所有新消息的发送入口,如果发送失败则会抛出异常。请注意,消息的目标队列名称请使用
- 方法 {@link #buildQueueName(long, String, int)} 来构建并设置,不满足格式的目标队列名称会导致消息发送失败。 *
- @param message
- @throws AMQException
type ClientConfig ¶
type Processor ¶
type Processor interface {
/**
* 获取要处理的消息类型,对应{@link AMQMessage}中的type字段。
*
* @return
*/
GetType() string
/**
* 接收新消息并进行处理,如果新消息为事务消息并且需要返回处理结果则请返回处理结果,否则返回Null即可。
*
* @param message
* @throws AMQException
*/
OnReceived(msg interface{}) (*message.MsgBody, error)
/**
* 单向/双向事务消息中的接收方应答消息的接收处理,对于单向事务消息处理完成后返回Null即可,对于双向事务消息则还需要
* 返回系统的处理结果给到接收方进行后续处理。
*
* @param msgId
* @param rsp
* @return
*/
OnRecipientAckReceived(msgId string, rsp *message.MsgBody) (*message.MsgBody, error)
/**
* 双向事务消息中的发送方的确认应答消息,由接收方进行处理。
*
* @param msgId 事务消息的唯一ID
* @param rsp 发送方返回的应答消息
*/
OnSenderAckReceived(msgId string, rsp *message.MsgBody) error
}
*
- AMQ消息的处理器接口定义,业务系统实现该接口后需要手动注册到{@link AMQClient}中去方可生效。
Click to show internal directories.
Click to hide internal directories.