消息队列13-封装服务类中的方法

前言

对于服务器类中的各个方法的参数,都是通过获取请求中的参数获取的,所以我们要封装虚拟主机的每个方法,让其提供必要的参数
我们首先设计,几个基础类,让后面的类都继承这几个基础类,然后给服务器调用

代码实现

①请求基础类

package com.example.demo.Common;

import lombok.Data;

import java.io.Serializable;

/*
* 对于这个类表示 ,一些公共的参数 ,辅助字段
*/
@Data
public class BasicArguments  implements Serializable {
    // 表示 一次请求 / 响应的身份标识, 可以把请求和响应来对上
    protected String rid;
    // 这次通信使用的 channel 的身份标识(TCP 内部的链接)
    protected String channelId;
}

②响应基础类

package com.example.demo.Common;

import lombok.Data;

import java.io.Serializable;

/*
* 表示各个远程调用的方法的返回值的公共信息
*/
@Data
public class BasicReturns  implements Serializable {
    // 用来标识唯一的请求和响应
    protected String rid;
    // 用来标识一个 channel
    protected String channelId;
    //表示远程调用方法的返回值
    protected boolean ok;
}

③创建交换机

package com.example.demo.Common;

import com.example.demo.mqServer.core.ExchangeType;
import lombok.Data;

import java.io.Serializable;
import java.util.Map;

@Data
public class ExchangeDeclareArguments extends  BasicArguments implements Serializable {
    private String exchangeName;
    private ExchangeType exchangeType;
    private boolean durable;
    private boolean autoDelete;
    private Map<String ,Object> arguments;

}

④删除交换机

package com.example.demo.Common;

import lombok.Data;

import java.io.Serializable;
@Data
public class ExchangeDeleteArguments extends BasicArguments implements Serializable {
    private String exchangeName;

}


⑤创建队列

package com.example.demo.Common;

import lombok.Data;

import java.io.Serializable;
import java.util.Map;
@Data
public class QueueDeclareArguments extends BasicArguments implements Serializable {
    private String queueName;
    private boolean durable;
    private boolean exclusive;
    private boolean autoDelete;
    private Map<String ,Object> arguments;
}

⑥删除队列

package com.example.demo.Common;

import lombok.Data;

import java.io.Serializable;
@Data
public class QueueDeleteArguments extends BasicArguments implements Serializable {
    private String queueName;
}


⑦创建绑定

package com.example.demo.Common;

import lombok.Data;

import java.io.Serializable;
@Data
public class QueueBindArguments extends BasicArguments implements Serializable {
    private String queueName;
    private String exchangeName;
    private String bindingKey;
}

⑧删除绑定

package com.example.demo.Common;

import lombok.Data;

import java.io.Serializable;
@Data
public class QueueUnbindArguments extends BasicArguments implements Serializable {
    private String queueName;
    private String exchangeName;

}

10.确认消息

package com.example.demo.Common;

import com.example.demo.mqServer.core.BasicProperties;
import lombok.Data;

import java.io.Serializable;
@Data
public class BasicPublishArguments extends BasicArguments implements Serializable {
    private String exchangeName;
    private String routingKey;
    private BasicProperties basicProperties;
    private byte[] body;

}

11.订阅消息

package com.example.demo.Common;

import lombok.Data;

import java.io.Serializable;
@Data
public class BasicConsumeArguments extends BasicArguments implements Serializable {
    private String consumerTag;
    private String queueName;
    private boolean autoAck;
    // 这个类对应的 basicConsume 方法中, 还有一个参数, 是回调函数. (如何来处理消息)
    // 这个回调函数, 是不能通过网络传输的.
    // 站在 broker server 这边, 针对消息的处理回调, 其实是统一的. (把消息返回给客户端)
    // 客户端这边收到消息之后, 再在客户端自己这边执行一个用户自定义的回调就行了.
    // 此时, 客户端也就不需要把自身的回调告诉给服务器了.
    // 这个类就不需要 consumer 成员了.
}

12.删除消息

package com.example.demo.Common;

import lombok.Data;

import java.io.Serializable;
@Data
public class BasicAckArguments extends BasicArguments implements Serializable {
    private String queueName;
    private String messageId;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值