spring boot 集成 rabbitmq

项目GitHub地址 :

https://github.com/FrameReserve/TrainingBoot


Spring Boot (十三)集成RabbitMQ,标记地址:

https://github.com/FrameReserve/TrainingBoot/releases/tag/0.1.0



pom.xml

  1. <!-- Rabbit MQ -->
  2. <dependency>
  3. <groupId>org.springframework.boot </groupId>
  4. <artifactId>spring-boot-starter-amqp </artifactId>
  5. </dependency>


Spring Boot配置文件application.yml:

src/main/resources/application.yml

  1. rabbitmq:
  2. host: 192.168.2.71
  3. port: 5672
  4. username: hxb
  5. password: hxb


RabbitMQ接收方法:

src/main/java/com/training/rabbitmq/receiver/DemoRabbitMqReceiver.java

  1. package com.training.rabbitmq.receiver;
  2. import org.springframework.amqp.rabbit.annotation.RabbitHandler;
  3. import org.springframework.amqp.rabbit.annotation.RabbitListener;
  4. import org.springframework.stereotype.Component;
  5. /**
  6. * 消息队列接收类
  7. */
  8. @Component
  9. @RabbitListener(queues = "hello")
  10. public class DemoRabbitMqReceiver {
  11. @RabbitHandler
  12. public void process(String content) {
  13. System.out.println( "Receiver : " + content);
  14. }
  15. }



RabbitMQ 发送方法:

src/main/java/com/training/rabbitmq/sender/DemoRabbitMqSender.java

  1. package com.training.rabbitmq.sender;
  2. import org.springframework.amqp.core.AmqpTemplate;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Component;
  5. @Component
  6. public class DemoRabbitMqSender {
  7. @Autowired
  8. private AmqpTemplate rabbitTemplate;
  9. public void send(String content) {
  10. System.out.println( "Sender : " + content);
  11. this.rabbitTemplate.convertAndSend( "hello", content);
  12. }
  13. }


测试 Rabbit MQ:

src/main/java/com/training/rabbitmq/controller/DemoRabbitMqController.java

  1. package com.training.rabbitmq.controller;
  2. import io.swagger.annotations.ApiOperation;
  3. import javax.servlet.http.HttpSession;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.RequestMethod;
  7. import org.springframework.web.bind.annotation.ResponseBody;
  8. import org.springframework.web.bind.annotation.RestController;
  9. import com.training.core.dto.ResultDataDto;
  10. import com.training.rabbitmq.sender.DemoRabbitMqSender;
  11. /**
  12. * 测试Rabbit MQ
  13. */
  14. @RestController
  15. @RequestMapping(value= "/rabbitmq")
  16. public class DemoRabbitMqController {
  17. @Autowired
  18. private DemoRabbitMqSender demoRabbitMqSender;
  19. /**
  20. * 发送测试消息队列
  21. */
  22. @ApiOperation(value= "发送测试消息队列", notes= "addEntity")
  23. @RequestMapping(value = "/addRabbitMq", method = RequestMethod.GET)
  24. public @ResponseBody ResultDataDto addEntity(HttpSession httpSession) {
  25. demoRabbitMqSender.send( "jkljklkjljjkljl");
  26. return ResultDataDto.addAddSuccess();
  27. }
  28. }



Spring Boot 启动异常:

  1. 14:38:51.447 [SimpleAsyncTaskExecutor-1] ERROR o.s.a.r.l.SimpleMessageListenerContainer - Consumer received fatal exception on startup
  2. org.springframework.amqp.rabbit.listener.QueuesNotAvailableException: Cannot prepare queue for listener. Either the queue doesn't exist or the broker will not allow us to use it.
  3. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:514)
  4. at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1280)
  5. at java.lang.Thread.run(Thread.java:745)
  6. Caused by: org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):[hello]
  7. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:587)
  8. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:486)
  9. ... 2 common frames omitted
  10. Caused by: java.io.IOException: null
  11. at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
  12. at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
  13. at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:124)
  14. at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:885)
  15. at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:61)
  16. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  17. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  18. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  19. at java.lang.reflect.Method.invoke(Method.java:498)
  20. at org.springframework.amqp.rabbit.connection.CachingConnectionFactory$CachedChannelInvocationHandler.invoke(CachingConnectionFactory.java:917)
  21. at com.sun.proxy.$Proxy140.queueDeclarePassive(Unknown Source)
  22. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:566)
  23. ... 3 common frames omitted
  24. Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method <channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'hello' in vhost '/', class-id=50, method-id=10)
  25. at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
  26. at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)
  27. at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:361)
  28. at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:226)
  29. at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118)
  30. ... 12 common frames omitted
  31. Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method <channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'hello' in vhost '/', class-id=50, method-id=10)
  32. at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:484)
  33. at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:321)
  34. at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:144)
  35. at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:91)
  36. at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:560)
  37. ... 1 common frames omitted
  38. 14:38:51.463 [SimpleAsyncTaskExecutor-1] ERROR o.s.a.r.l.SimpleMessageListenerContainer - Stopping container from aborted consumer
  39. 14:38:51.478 [localhost-startStop-1] ERROR o.s.boot.SpringApplication - Application startup failed
  40. org.springframework.context.ApplicationContextException: Failed to start bean 'org.springframework.amqp.rabbit.config.internalRabbitListenerEndpointRegistry'; nested exception is org.springframework.amqp.AmqpIllegalStateException: Fatal exception on listener startup
  41. at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:176)
  42. at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51)
  43. at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346)
  44. at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149)
  45. at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:112)
  46. at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:874)
  47. at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:144)
  48. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544)
  49. at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
  50. at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761)
  51. at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371)
  52. at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
  53. at org.springframework.boot.web.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:151)
  54. at org.springframework.boot.web.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:131)
  55. at org.springframework.boot.web.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:86)
  56. at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169)
  57. at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5183)
  58. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
  59. at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1403)
  60. at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393)
  61. at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  62. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  63. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  64. at java.lang.Thread.run(Thread.java:745)
  65. Caused by: org.springframework.amqp.AmqpIllegalStateException: Fatal exception on listener startup
  66. at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doStart(SimpleMessageListenerContainer.java:820)
  67. at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.start(AbstractMessageListenerContainer.java:550)
  68. at org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry.startIfNecessary(RabbitListenerEndpointRegistry.java:272)
  69. at org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry.start(RabbitListenerEndpointRegistry.java:235)
  70. at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173)
  71. ... 23 common frames omitted
  72. Caused by: org.springframework.amqp.rabbit.listener.QueuesNotAvailableException: Cannot prepare queue for listener. Either the queue doesn't exist or the broker will not allow us to use it.
  73. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:514)
  74. at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1280)
  75. ... 1 common frames omitted
  76. Caused by: org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):[hello]
  77. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:587)
  78. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:486)
  79. ... 2 common frames omitted
  80. Caused by: java.io.IOException: null
  81. at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
  82. at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
  83. at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:124)
  84. at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:885)
  85. at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:61)
  86. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  87. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  88. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  89. at java.lang.reflect.Method.invoke(Method.java:498)
  90. at org.springframework.amqp.rabbit.connection.CachingConnectionFactory$CachedChannelInvocationHandler.invoke(CachingConnectionFactory.java:917)
  91. at com.sun.proxy.$Proxy140.queueDeclarePassive(Unknown Source)
  92. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:566)
  93. ... 3 common frames omitted
  94. Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method <channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'hello' in vhost '/', class-id=50, method-id=10)
  95. at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
  96. at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)
  97. at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:361)
  98. at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:226)
  99. at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118)
  100. ... 12 common frames omitted
  101. Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method <channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'hello' in vhost '/', class-id=50, method-id=10)
  102. at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:484)
  103. at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:321)
  104. at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:144)
  105. at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:91)
  106. at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:560)
  107. ... 1 common frames omitted
  108. 14:38:51.478 [Catalina-startStop-1] ERROR o.apache.catalina.core.ContainerBase - A child container failed during start
  109. java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
  110. at java.util.concurrent.FutureTask.report(FutureTask.java:122)
  111. at java.util.concurrent.FutureTask.get(FutureTask.java:192)
  112. at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:911)
  113. at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:890)
  114. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
  115. at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1403)
  116. at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393)
  117. at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  118. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  119. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  120. at java.lang.Thread.run(Thread.java:745)
  121. Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
  122. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:158)
  123. ... 6 common frames omitted
  124. Caused by: org.springframework.context.ApplicationContextException: Failed to start bean 'org.springframework.amqp.rabbit.config.internalRabbitListenerEndpointRegistry'; nested exception is org.springframework.amqp.AmqpIllegalStateException: Fatal exception on listener startup
  125. at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:176)
  126. at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51)
  127. at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346)
  128. at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149)
  129. at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:112)
  130. at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:874)
  131. at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:144)
  132. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544)
  133. at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
  134. at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761)
  135. at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371)
  136. at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
  137. at org.springframework.boot.web.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:151)
  138. at org.springframework.boot.web.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:131)
  139. at org.springframework.boot.web.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:86)
  140. at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169)
  141. at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5183)
  142. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
  143. ... 6 common frames omitted
  144. Caused by: org.springframework.amqp.AmqpIllegalStateException: Fatal exception on listener startup
  145. at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doStart(SimpleMessageListenerContainer.java:820)
  146. at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.start(AbstractMessageListenerContainer.java:550)
  147. at org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry.startIfNecessary(RabbitListenerEndpointRegistry.java:272)
  148. at org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistry.start(RabbitListenerEndpointRegistry.java:235)
  149. at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173)
  150. ... 23 common frames omitted
  151. Caused by: org.springframework.amqp.rabbit.listener.QueuesNotAvailableException: Cannot prepare queue for listener. Either the queue doesn't exist or the broker will not allow us to use it.
  152. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:514)
  153. at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1280)
  154. ... 1 common frames omitted
  155. Caused by: org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):[hello]
  156. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:587)
  157. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:486)
  158. ... 2 common frames omitted
  159. Caused by: java.io.IOException: null
  160. at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:106)
  161. at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:102)
  162. at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:124)
  163. at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:885)
  164. at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:61)
  165. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  166. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  167. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  168. at java.lang.reflect.Method.invoke(Method.java:498)
  169. at org.springframework.amqp.rabbit.connection.CachingConnectionFactory$CachedChannelInvocationHandler.invoke(CachingConnectionFactory.java:917)
  170. at com.sun.proxy.$Proxy140.queueDeclarePassive(Unknown Source)
  171. at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:566)
  172. ... 3 common frames omitted
  173. Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method <channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'hello' in vhost '/', class-id=50, method-id=10)
  174. at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:67)
  175. at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:33)
  176. at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:361)
  177. at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:226)
  178. at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:118)
  179. ... 12 common frames omitted
  180. Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method <channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'hello' in vhost '/', class-id=50, method-id=10)
  181. at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:484)
  182. at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:321)
  183. at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:144)
  184. at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:91)
  185. at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:560)
  186. ... 1 common frames omitted
  187. 14:38:51.478 [main] ERROR o.apache.catalina.core.ContainerBase - A child container failed during start
  188. java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
  189. at java.util.concurrent.FutureTask.report(FutureTask.java:122)
  190. at java.util.concurrent.FutureTask.get(FutureTask.java:192)
  191. at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:911)
  192. at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
  193. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
  194. at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
  195. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
  196. at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:791)
  197. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
  198. at org.apache.catalina.startup.Catalina.start(Catalina.java:655)
  199. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  200. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  201. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  202. at java.lang.reflect.Method.invoke(Method.java:498)
  203. at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
  204. at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)
  205. Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
  206. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:158)
  207. at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1403)
  208. at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393)
  209. at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  210. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  211. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  212. at java.lang.Thread.run(Thread.java:745)
  213. Caused by: org.apache.catalina.LifecycleException: A child container failed during start
  214. at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:920)
  215. at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:890)
  216. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
  217. ... 6 common frames omitted
  218. 14:38:51.478 [main] ERROR org.apache.catalina.startup.Catalina - The required Server component failed to start so Tomcat is unable to start.
  219. org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
  220. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:158)
  221. at org.apache.catalina.startup.Catalina.start(Catalina.java:655)
  222. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  223. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  224. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  225. at java.lang.reflect.Method.invoke(Method.java:498)
  226. at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
  227. at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)
  228. Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
  229. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:158)
  230. at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:791)
  231. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
  232. ... 7 common frames omitted
  233. Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
  234. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:158)
  235. at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
  236. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
  237. ... 9 common frames omitted
  238. Caused by: org.apache.catalina.LifecycleException: A child container failed during start
  239. at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:920)
  240. at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
  241. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
  242. ... 11 common frames omitted
  243. 14:38:51.494 [main] ERROR o.a.coyote.http11.Http11NioProtocol - Failed to destroy end point associated with ProtocolHandler ["http-nio-8080"]
  244. java.lang.NullPointerException: null
  245. at org.apache.tomcat.util.net.NioEndpoint.releaseCaches(NioEndpoint.java:206)
  246. at org.apache.tomcat.util.net.NioEndpoint.unbind(NioEndpoint.java:352)
  247. at org.apache.tomcat.util.net.AbstractEndpoint.destroy(AbstractEndpoint.java:865)
  248. at org.apache.coyote.AbstractProtocol.destroy(AbstractProtocol.java:645)
  249. at org.apache.catalina.connector.Connector.destroyInternal(Connector.java:1072)
  250. at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:302)
  251. at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:571)
  252. at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:302)
  253. at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:881)
  254. at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:302)
  255. at org.apache.catalina.startup.Catalina.start(Catalina.java:659)
  256. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  257. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  258. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  259. at java.lang.reflect.Method.invoke(Method.java:498)
  260. at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
  261. at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)
  262. 14:38:51.494 [main] ERROR org.apache.coyote.ajp.AjpNioProtocol - Failed to destroy end point associated with ProtocolHandler ["ajp-nio-8009"]
  263. java.lang.NullPointerException: null
  264. at org.apache.tomcat.util.net.NioEndpoint.releaseCaches(NioEndpoint.java:206)
  265. at org.apache.tomcat.util.net.NioEndpoint.unbind(NioEndpoint.java:352)
  266. at org.apache.tomcat.util.net.AbstractEndpoint.destroy(AbstractEndpoint.java:865)
  267. at org.apache.coyote.AbstractProtocol.destroy(AbstractProtocol.java:645)
  268. at org.apache.catalina.connector.Connector.destroyInternal(Connector.java:1072)
  269. at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:302)
  270. at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:571)
  271. at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:302)
  272. at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:881)
  273. at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:302)
  274. at org.apache.catalina.startup.Catalina.start(Catalina.java:659)
  275. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  276. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  277. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  278. at java.lang.reflect.Method.invoke(Method.java:498)
  279. at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:355)
  280. at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:495)



若报如上错误,说明消息队列不存在,请在控制台添加消息队列。







启动正常发送。

Spring Boot 集成 RabbitMQ 是一种常见的实践,用于在基于 Spring Boot 的应用程序中集成消息队列系统,RabbitMQ 是一个开源的消息中间件,常用于分布式系统的解耦和异步通信。 下面是简单的集成步骤: 1. 添加依赖:首先,你需要在你的 Maven 或 Gradle 项目中添加 RabbitMQ 客户端的依赖。对于 Maven,可以在 `pom.xml` 中添加: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> ``` 对于 Gradle,添加到 `build.gradle` 文件的 `dependencies` 节点: ```groovy implementation 'org.springframework.boot:spring-boot-starter-amqp' ``` 2. 配置 RabbitMQ:在 application.properties 或者 application.yml 文件中配置 RabbitMQ 的连接信息,如主机名、端口号、用户名和密码等: ```properties spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=admin spring.rabbitmq.password=password ``` 3. 创建消息生产者:使用 Spring 的 `RabbitTemplate` 类创建发送消息的方法,通常在服务中定义: ```java @Autowired private RabbitTemplate rabbitTemplate; public void sendMessage(String message) { rabbitTemplate.convertAndSend("queue-name", message); } ``` 4. 创建消息消费者:创建监听特定队列的消费者,可以是传统的 Java 接收器,也可以使用注解驱动(@RabbitListener)的方式: ```java @RabbitListener(queues = "queue-name") public void handleMessage(String message) { System.out.println("Received message: " + message); } ``` 5. 启动应用:运行 Spring Boot 应用,Spring Boot 自动会初始化 RabbitMQ 连接并注册你的消费者。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值