如何动态配置MQ的连接信息(ip,host,username,password)

Inory丶snow 2019-07-18 10:42:46
如题,项目需求是对方提供给我一个接口和用户名密码,我通过这个接口取获取MQ连接信息(包括host,port,username,password,exchange等),目前获取后手动直接在properties文件内配置,这样是可以正常访问推送信息的
application.properties
```
#rabbitmq
spring.rabbitmq.host=
spring.rabbitmq.port=
spring.rabbitmq.username=
spring.rabbitmq.password=
spring.rabbitmq.exchange=
```

但是现在对方说,MQ信息会不定时更换,他提供用户名和密码,我方使用该用户名和密码获取对方的MQ连接信息,而这些信息是不定期更改的,因此不能直接在properties文件内写死。
按照设想,是每次通过用户名和密码获取MQ连接信息,对连接信息处理后存入数据库,比如:
表名rabbitMQ
key value
host
port
username
password
exchange

这样的形式保存。
现在的问题是,我从数据库中拿出这些MQ连接信息,该如何使用?
直接配置在properties中的话我会,但是项目部署到线上是以jar包的形式,好像不能再对properties进行修改,那比如MQ的ip,port,username,password这些信息,该如何配置应用?
...全文
766 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
浪费七年时间 2019-07-18
  • 打赏
  • 举报
回复
springboot如果不是运行时刷新,而是手动更新配置重启项目的话,可以@Configuration、@Bean代码配置RabbitConnectionFactory,帐号密码等数据从数据库查询获取就行。配置一个RabbitConnectionFactory的代码可以参考下面两个 Spring AMQP官方文档 Spring Boot AMQP自动配置源码 第二个是org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration类中的public CachingConnectionFactory rabbitConnectionFactory()方法源码
Inory丶snow 2019-07-18
  • 打赏
  • 举报
回复
引用 3 楼 浪费七年时间 的回复:
[quote=引用 2 楼 Inory丶snow 的回复:] [quote=引用 1 楼 浪费七年时间 的回复:] springboot如果不是运行时刷新,而是手动更新配置重启项目的话,可以@Configuration、@Bean代码配置RabbitConnectionFactory,帐号密码等数据从数据库查询获取就行。配置一个RabbitConnectionFactory的代码可以参考下面两个 Spring AMQP官方文档 Spring Boot AMQP自动配置源码 第二个是org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration类中的public CachingConnectionFactory rabbitConnectionFactory()方法源码
非常感谢,这就去看看。 另外请教一个问题,这是我MQ推送信息部分的代码 try { rabbitTemplate.convertAndSend(exchange, routingKey, demoAlarmInfo); //推送信息 request.setAttribute("data", ResultUtil.success("告警上报成功", demoAlarmInfo)); //保存推送成功记录 } catch (Exception e) { request.setAttribute("data", ResultUtil.error("mq连接失败", demoAlarmInfo)); //保存MQ连接失败记录 } 现在遇到一个问题,如果短时间内,需要推送十几条数据,会出现推送成功,但是数据部分丢失的问题,比如2秒内本来需要推送15条数据,现在会出现成功推送前10条,后5条数据并没有推送上去,但是我这边本地的推送成功记录里,确实记录的是15条推送成功,请问这个数据丢失,是MQ服务器那边的问题,还是应该我本地进行一定的设置? 如果是我本地推送时的问题,请问该如何修改[/quote] 没用过队列,消息丢失问题没法给你答案。。。[/quote] 还是非常感谢
浪费七年时间 2019-07-18
  • 打赏
  • 举报
回复
引用 2 楼 Inory丶snow 的回复:
[quote=引用 1 楼 浪费七年时间 的回复:] springboot如果不是运行时刷新,而是手动更新配置重启项目的话,可以@Configuration、@Bean代码配置RabbitConnectionFactory,帐号密码等数据从数据库查询获取就行。配置一个RabbitConnectionFactory的代码可以参考下面两个 Spring AMQP官方文档 Spring Boot AMQP自动配置源码 第二个是org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration类中的public CachingConnectionFactory rabbitConnectionFactory()方法源码
非常感谢,这就去看看。 另外请教一个问题,这是我MQ推送信息部分的代码 try { rabbitTemplate.convertAndSend(exchange, routingKey, demoAlarmInfo); //推送信息 request.setAttribute("data", ResultUtil.success("告警上报成功", demoAlarmInfo)); //保存推送成功记录 } catch (Exception e) { request.setAttribute("data", ResultUtil.error("mq连接失败", demoAlarmInfo)); //保存MQ连接失败记录 } 现在遇到一个问题,如果短时间内,需要推送十几条数据,会出现推送成功,但是数据部分丢失的问题,比如2秒内本来需要推送15条数据,现在会出现成功推送前10条,后5条数据并没有推送上去,但是我这边本地的推送成功记录里,确实记录的是15条推送成功,请问这个数据丢失,是MQ服务器那边的问题,还是应该我本地进行一定的设置? 如果是我本地推送时的问题,请问该如何修改[/quote] 没用过队列,消息丢失问题没法给你答案。。。
Inory丶snow 2019-07-18
  • 打赏
  • 举报
回复
引用 1 楼 浪费七年时间 的回复:
springboot如果不是运行时刷新,而是手动更新配置重启项目的话,可以@Configuration、@Bean代码配置RabbitConnectionFactory,帐号密码等数据从数据库查询获取就行。配置一个RabbitConnectionFactory的代码可以参考下面两个 Spring AMQP官方文档 Spring Boot AMQP自动配置源码 第二个是org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration类中的public CachingConnectionFactory rabbitConnectionFactory()方法源码
非常感谢,这就去看看。 另外请教一个问题,这是我MQ推送信息部分的代码 try { rabbitTemplate.convertAndSend(exchange, routingKey, demoAlarmInfo); //推送信息 request.setAttribute("data", ResultUtil.success("告警上报成功", demoAlarmInfo)); //保存推送成功记录 } catch (Exception e) { request.setAttribute("data", ResultUtil.error("mq连接失败", demoAlarmInfo)); //保存MQ连接失败记录 } 现在遇到一个问题,如果短时间内,需要推送十几条数据,会出现推送成功,但是数据部分丢失的问题,比如2秒内本来需要推送15条数据,现在会出现成功推送前10条,后5条数据并没有推送上去,但是我这边本地的推送成功记录里,确实记录的是15条推送成功,请问这个数据丢失,是MQ服务器那边的问题,还是应该我本地进行一定的设置? 如果是我本地推送时的问题,请问该如何修改

51,408

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧