storm-rabbitmq

依旧是代码:

pom.xml

<dependency>
    <groupId>io.latent</groupId>
    <artifactId>storm-rabbitmq</artifactId>
    <version>1.0.0</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
properties类:

package com.yjp.stormrabbitmq.rabbitmq;

import org.springframework.boot.context.properties.ConfigurationProperties;

import java.io.Serializable;

@ConfigurationProperties(prefix = "spring.storm.rabbitmq")
public class RabbitMQProperties implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * rabbitmq的ip
     */
    private String ip;
    /**
     * rabbitmq的端口号
     */
    private Integer port;
    /**
     * rabbitmq的用户名
     */
    private String user;

    /**
     * rabbitmq的密码
     */
    private String password;
    /**
     * 虚拟消息服务器  每个VirtualHost之间是相互隔离的
     */
    private String virtualHost;
    /**
     * 集群中心跳检测时间间隔
     */
    private Integer heartBeat;
    /**
     * 配置高可用
     */
    private String highAvailableHosts;


    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    public Integer getPort() {
        return port;
    }

    public void setPort(Integer port) {
        this.port = port;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getVirtualHost() {
        return virtualHost;
    }

    public void setVirtualHost(String virtualHost) {
        this.virtualHost = virtualHost;
    }

    public Integer getHeartBeat() {
        return heartBeat;
    }

    public void setHeartBeat(Integer heartBeat) {
        this.heartBeat = heartBeat;
    }

    public String getHighAvailableHosts() {
        return highAvailableHosts;
    }

    public void setHighAvailableHosts(String highAvailableHosts) {
        this.highAvailableHosts = highAvailableHosts;
    }
}
配置 ConnectionConfig

package com.yjp.stormrabbitmq.rabbitmq;

import io.latent.storm.rabbitmq.config.ConfigAvailableHosts;
import io.latent.storm.rabbitmq.config.ConnectionConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.io.Serializable;

@Configuration
@EnableConfigurationProperties({RabbitMQProperties.class})
public class RabbitMQAutoConfiguration implements Serializable {
    private static final long serialVersionUID = 1L;

    @Autowired
    private RabbitMQProperties rabbitMQProperties;

    /**
     * 集群环境 高可用
     *
     * @return
     */
    private ConnectionConfig connectionConfig() {
        ConfigAvailableHosts configAvailableHosts = ConfigAvailableHosts
                .fromString(rabbitMQProperties.getHighAvailableHosts());
        return new ConnectionConfig(configAvailableHosts, rabbitMQProperties.getIp(), rabbitMQProperties.getPort(),
                rabbitMQProperties.getUserName(), rabbitMQProperties.getPassword(), rabbitMQProperties.getVirtualHost(),
                rabbitMQProperties.getHeartBeat(), false);
    }

    @Bean
    public ChannelFactory channelFactory() {
        return new ChannelFactory(connectionConfig());
    }

    /**
     * 单机环境
     *
     * @return
     */
//    private ConnectionConfig connection() {
//        return new ConnectionConfig(rabbitMQProperties.getIp(),
//                rabbitMQProperties.getPort(), rabbitMQProperties.getUserName(),
//                rabbitMQProperties.getPassword(), rabbitMQProperties.getVirtualHost(),
//                rabbitMQProperties.getHeartBeat(), false);
//    }
    /**
     * 单机环境的连接
     */
//    @Bean
//    public ChannelFactory channelFactory() {
//        return new ChannelFactory(connection());
//    }

}
配置连接工厂 因为chanel无法被序列化

package com.yjp.stormrabbitmq.rabbitmq;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.ConnectionFactory;
import io.latent.storm.rabbitmq.config.ConnectionConfig;

import java.io.IOException;
import java.io.Serializable;

public class ChannelFactory implements Serializable {
    private static final long serialVersionUID = -2287602531757033534L;

    private ConnectionConfig connectionConfig;

    public ChannelFactory(ConnectionConfig connectionConfig) {
        this.connectionConfig = connectionConfig;
    }

    public Channel channel() {
        Channel channel;
        try {
            ConnectionFactory connectionFactory = connectionConfig.asConnectionFactory();
            //当连接断开时 自动恢复连接
            connectionFactory.setAutomaticRecoveryEnabled(true);
            //  自动恢复连接的时间间隔  默认为5000ms
//            connectionFactory.setNetworkRecoveryInterval(5000);
            channel = connectionFactory.newConnection().createChannel();
        } catch (IOException e) {
            throw new RuntimeException("channel创建失败" + e);
        }
        return channel;
    }


}
注入到需要使用的地方就可以使用了

整合到此结束

努力吧 皮卡丘




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值