syntax = "proto2"; package Rabbitmq_proto; //Rabbitmq 配置的通道,队列和消费者, //注:目前规定 //接受请求消息:同一子节点所有的请求消息写同一个channel通道编号,queue_durable = 1, queue_auto_delete = 0, consume_no_ack = 0, //接受状态消息:同一子节点所有的状态消息写同一个channel通道编号,queue_durable = 0, queue_auto_delete = 1, consume_no_ack = 1, message Rabbitmq_channel_queue_consume { optional int32 channel = 1; //连接通道,必写, 可以相同, 不同的消息队列可以共用同一个连接通道, //配合 amqp_basic_qos 和 amqp_basic_ack , 来阻塞这个通道的接受消息 //请求消息和状态消息必须分别写不同的通道,例如所有的请求都可以写12, 所有的状态都可以写34 optional string exchange_name = 2; //交换机名称,必写, 可以相同, 不同的消息队列可以共用同一个交换机, //配合 routingkey 和 bindingkey , 来分配消息到合适的队列 //发送队列专属 optional string routing_key = 3; //发送端的路由键, 交换机分配消息的判断条件 optional int32 timeout_ms = 4; //发送超时时间, 单位ms, 服务器会自动删除超时的消息, 如果写0,那么就没有超时删除 //接受队列专属 optional string binding_key = 5; //接受端的绑定键, 交换机分配消息的判断条件 optional string queue_name = 6; //队列名称,必写, 不能相同 optional int32 queue_passive = 7[default = 0]; //是否被动,默认0 optional int32 queue_durable = 8; //是否持久,必写, 节点代码可以创建临时队列(所有权归节点), 服务器手动创建永久队列(所有权归服务器) // 1表示永久队列,当节点死掉,队列在服务器保留,仍然可以接受数据,节点上线后,可以接受掉线期间的所有数据 // 0表示临时队列,当节点死掉,队列消失,不再接受数据,直到下次恢复正常 optional int32 queue_exclusive = 9[default = 0]; //是否独立,默认0 optional int32 queue_auto_delete = 10[default = 0]; //是否自动删除, 固定写0, //1表示消息被消费者接受后,就自动删除消息, 当接收端断连后,队列也会删除, //0表示消息被消费者接受后,不会自动删除消息, 需要手动ack才会删除消息, 队列不会删除 //一般情况下设为0,然后让接受者手动删除. optional int32 queue_meassage_ttl = 11[default = 0]; //队列配置的扩展参数, x-message-ttl 队列接受消息 的超时时间 (单位毫秒) //默认写0, 不配置超时, 一般在状态消息的临时队列写入1000ms optional string consume_name = 12; //消费者名称,必写, 不能相同 optional int32 consume_no_local = 13[default = 0]; //是否非本地, 默认0,表示本地 optional int32 consume_no_ack = 14[default = 0]; //是否确认应答,默认0,表示接收后需要应答 //请求消息必须写0, 必须应答之后才能接受下一条 //状态消息必须写1, 可以无限循环接受,收到的瞬间,服务器就会删除这一条消息 optional int32 consume_exclusive = 15; //是否独立,默认0 } //Rabbitmq 配置参数 message Rabbitmq_parameter { optional string ip = 1; //服务器ip地址, 不带端口 optional int32 port = 2; //端口,默认5672 optional string user = 3; //用户名, 默认guest optional string password = 4; //密码, 默认guest repeated Rabbitmq_channel_queue_consume rabbitmq_reciever_vector= 5; //Rabbitmq 接受的通道,队列和消费者, 多个 repeated Rabbitmq_channel_queue_consume rabbitmq_sender_request_vector= 6; //Rabbitmq 发送请求的通道 repeated Rabbitmq_channel_queue_consume rabbitmq_sender_status_vector= 7; //Rabbitmq 发送状态的通道 //注:rabbitmq的接受是以队列为目标的, 可以同时接受多个队列的消息. //注:rabbitmq的发送是以交换机为目标的,我们发送到交换机后,由交换机按照规则,去分配到下面的队列里面 } //Rabbitmq 配置参数 总配置 message Rabbitmq_parameter_all { optional Rabbitmq_parameter rabbitmq_parameters=1; }