
Security News
pnpm 11.10 Hardens Registry Authentication to Block Token Redirection
pnpm 11.10 hardens registry auth to block token redirection, tightens pack-app and deploy, and makes the Rust port (v12) installable.
C4MQ是基于amqp模块构建的MQ操作类(模块),并提供了更高级的封装形式:
使用MQHandler注解对方法进行标记,提供消息处理方法;
{
PublisherName ?: string, // Exchange或Publisher的名字
RoutingKey ?: string, // routingkey
MsgType : string // Message的类型
}
使用MsgBody注解对消息体中属性进行标记,用于参数绑定;
{
value : string // 需要绑定的属性名
}
具体示例参考./src/MQHandlers/Hello.ts
C4MQ
说明:用于连接MQ的类,对应RabbitMQ中Channel
路径:./src/C4MQ.ts
成员变量:
成员方法:
/**
* 初始化,用于配置Channel和连接MQ
* @param config ConnectionOptions
* @param logger 日志对象
*/
async init(config : ConnectionOptions, logger ?: any)
/**
* 断开连接
*/
async disconnect()
/**
* 获取mq的Channel对象
*/
getChannel()
/**
* 是否初始化
*/
isInit()
C4Exchange
说明:对RabbitMQ的Exchange的封装
路径:./src/C4Exchange.ts
成员变量:
成员方法:
/**
* 声明Exchange
* @param Conn C4MQ,MQ连接
* @param name Exchange名
* @param options ExchangeOptions,配置属性
* @param logger 日志对象
*/
async declared(Conn : C4MQ, name : string, options : ExchangeOptions, logger ?: any)
/**
* 发布消息
* @param routingKey routingKey
* @param message message
* @param options ExchangePublishOptions,配置项
*/
async publish(routingKey : string, message : Buffer | {}, options : ExchangePublishOptions)
/**
* 销毁
* @param ifUnused 是否在不再使用时销毁
*/
destroy(ifUnused = true)
/**
* 绑定到另一个Exchange
* @param srcExchangeName exchange的名字
* @param routingKey routingkey
*/
async bindExchange(srcExchangeName : string, routingKey : string)
/**
* 解除绑定
* @param srcExchangeName exchange名
* @param routingKey routingKey
*/
async unbindExchange(srcExchangeName : string, routingKey : string)
/**
* 绑定Header
* @param exchangeName exchange名
* @param routingKey routingKey
*/
async bindHeaders(exchangeName : string, routingKey : string)
/**
* 获取Exchange的实例
*/
getExchagneInstance()
/**
* 是否初始化
*/
isInit()
/**
* 获取Exchange名
*/
getName()
C4Queue
说明:对应RabbitMQ的Queue
路径:./src/C4Queue.ts
成员变量:
成员方法:
/**
* 声明
* @param Conn 连接
* @param name 名字
* @param options QueueOptions
* @param logger 日志
*/
async declared(Conn : C4MQ, name : string, options : QueueOptions, logger ?: any)
/**
* 销毁
* @param options {
* ifUnused : boolean, // 是否在不用后销毁
* isEmpty : boolean, // 是否在空后后销毁
* }
*/
desroy(options : { ifUnused : boolean, isEmpty : boolean})
/**
* 绑定Excahnge
* @param exchangeName excahnge的名字
* @param routingKey routingKey
*/
async bindExchange(exchangeName : string, routingKey : string)
/**
* 解绑
* @param exchangeName exchange的名字
* @param routingKey routingKey
*/
unbindExchange(exchangeName : string, routingKey : string)
/**
* 绑定Headers
* @param exchangeName excahnge名字
* @param routingKey routingKey
*/
bindHeaders(exchangeName : string, routingKey : string)
/**
* 解绑Headers
* @param exchangeName exchange名
* @param routingKey routingKeys
*/
unbindHeaders(exchangeName : string, routingKey : string)
/**
* 订阅消息
* @param options 订阅配置
* @param CB 消息处理方法,如果不设置,则采用内部机制
*
*/
async subscribe(options : SubscribeOptions, CB ?: SubscribeCallback)
/**
* 取消订阅
*/
unsubscribe()
/**
* 去消息并处理
* @param CB 消息处理方法
* 订阅消息时没有设置处理方法,则会进行内部处理,然后使用该方法进行单个消息的处理
* CB返回true,则消息正常ack
* CB返回false,则消息丢弃不会重排
* CB抛异常,则消息重排
*/
async peekMsg(CB : (message : any,
headers : {[key : string] : any},
deliveryInfo : DeliveryInfo,
ack : Ack) => Promise<boolean> | boolean)
/**
* 获取Queue实例
*/
getQueueInstance()
/**
* 是否已经初始化
*/
isInit()
/**
* 获取Queue名
*/
getName()
C4Publisher
说明:对C4Exchange的封装,主要发送消息;
路径:./src/C4Publisher.ts
成员变量:
成员方法:
/**
* 初始化
* @param Conn C4MQ,MQ连接
* @param option C4PublisherOption
* @param logger 日志对象
*/
async init(Conn : C4MQ, option : C4PublisherOption, logger ?: any)
/**
* 发布消息
* @param message 消息
* @param routingKey routingKey
* @param option ExchangePublishOptions
*/
async publish(message : {} | Buffer, routingKey ?: string, option ?: ExchangePublishOptions)
/**
* 是否初始化
*/
isInit()
/**
* 获取Exchange的名字
*/
getName()
C4Subscriber
说明:对C4Queue的封装,支持注解添加消息处理方法;
路径:./src/C4Subscriber.ts
成员变量:
成员方法:
/**
* 初始化
* @param Conn C4MQ连接,MQ连接
* @param option C4SubscriberOption
* @param logger 日志对象
*/
async init(Conn : C4MQ, option : C4SubscriberOption, logger ?: any)
/**
* 添加订阅配置
* @param option C4SubscribeOption
*/
addSubscribe(option : C4SubscribeOption)
/**
* 开始订阅
*/
async subscribe()
/**
* 消息处理方法
*/
async __processMsg()
/**
* 添加消息处理方法
* @param handlers 方法对象或者加名字
* 当handlers为名字时,会从
* './MQHandlers/',
* './out/MQHandlers/'
* 两个位置尝试进行搜索对应的文件并加载
* ts:默认放到在src/MQHandlers目下编写ts代码,
* 编译后在out目录下自动得到'./out/MQHandlers/'
* js:工程目录下创建MQHandlers,然后放入编译后的js代码
*/
async addMQHandler(handlers : Array<any>) : Promise<any>;
async addMQHandler(handlerPaths : string[]) : Promise<any>;
async addMQHandler(arg : Array<any | string>)
/**
* 是否初始化
*/
isInit()
/**
* 获取Queue的名字
*/
getName()
FAQs
C4FrameworkMQ
The npm package c4-mq receives a total of 12 weekly downloads. As such, c4-mq popularity was classified as not popular.
We found that c4-mq demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
pnpm 11.10 hardens registry auth to block token redirection, tightens pack-app and deploy, and makes the Rust port (v12) installable.

Security News
/Research
Socket uncovered 17 malicious npm and PyPI packages typosquatting Paysafe, Skrill, and Neteller SDKs to steal developer secrets.

Security News
Node.js is debating whether AI-driven security report volume warrants moving more vulnerability reports into public workflows.