在Spring AMQP项目中Spring也提供了对RabbitMQ的支持,这里在之前学习SpringBoot的时候也整合过,但是今天这里使用的Spring的xml配置来整个rabbit.

Spring AMQP项目地址:https://spring.io/projects/spring-amqp;

下面来看看使用方式。

1. 引入依赖

pom文件如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6.  
  7. <groupId>com.rabbitmq.wangx</groupId>
  8. <artifactId>rabbitmq</artifactId>
  9. <version>1.0-SNAPSHOT</version>
  10. <packaging>war</packaging>
  11.  
  12. <name>rabbitmq Maven Webapp</name>
  13. <!-- FIXME change it to the project's website -->
  14. <url>http://www.example.com</url>
  15.  
  16. <properties>
  17. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  18. <maven.compiler.source>1.7</maven.compiler.source>
  19. <maven.compiler.target>1.7</maven.compiler.target>
  20. <maven.test.failure.ignore>true</maven.test.failure.ignore>
  21. <spring.framework.version>4.3.9.RELEASE</spring.framework.version>
  22. <spring.amqp.version>2.1.1.RELEASE</spring.amqp.version>
  23. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  24. <java.version>1.8</java.version>
  25. <maven.test.failure.ignore>false</maven.test.failure.ignore>
  26. </properties>
  27.  
  28. <dependencies>
  29. <dependency>
  30. <groupId>junit</groupId>
  31. <artifactId>junit</artifactId>
  32. <version>4.11</version>
  33. <scope>test</scope>
  34. </dependency>
  35. <dependency>
  36. <groupId>com.rabbitmq</groupId>
  37. <artifactId>amqp-client</artifactId>
  38. <version>5.5.0</version>
  39. </dependency>
  40. <dependency>
  41. <groupId>org.slf4j</groupId>
  42. <artifactId>slf4j-api</artifactId>
  43. <version>1.8.0-beta2</version>
  44. </dependency>
  45. <dependency>
  46. <groupId>org.slf4j</groupId>
  47. <artifactId>slf4j-simple</artifactId>
  48. <version>1.8.0-beta2</version>
  49. </dependency>
  50.  
  51. <dependency>
  52. <groupId>org.springframework</groupId>
  53. <artifactId>spring-core</artifactId>
  54. <version>${spring.framework.version}</version>
  55. <exclusions>
  56. <!-- Exclude Commons Logging in favor of SLF4j -->
  57. <exclusion>
  58. <groupId>commons-logging</groupId>
  59. <artifactId>commons-logging</artifactId>
  60. </exclusion>
  61. </exclusions>
  62. </dependency>
  63. <dependency>
  64. <groupId>org.springframework</groupId>
  65. <artifactId>spring-context</artifactId>
  66. <version>${spring.framework.version}</version>
  67. </dependency>
  68. <dependency>
  69. <groupId>org.springframework</groupId>
  70. <artifactId>spring-messaging</artifactId>
  71. <version>${spring.framework.version}</version>
  72. </dependency>
  73. <dependency>
  74. <groupId>org.springframework</groupId>
  75. <artifactId>spring-tx</artifactId>
  76. <version>${spring.framework.version}</version>
  77. </dependency>
  78. <dependency>
  79. <groupId>org.springframework</groupId>
  80. <artifactId>spring-test</artifactId>
  81. <version>${spring.framework.version}</version>
  82. <scope>test</scope>
  83. </dependency>
  84. <dependency>
  85. <groupId>cglib</groupId>
  86. <artifactId>cglib-nodep</artifactId>
  87. <version>2.2</version>
  88. <scope>runtime</scope>
  89. </dependency>
  90.  
  91. <dependency>
  92. <groupId>junit</groupId>
  93. <artifactId>junit</artifactId>
  94. <version>4.12</version>
  95. <scope>test</scope>
  96. </dependency>
  97.  
  98. <dependency>
  99. <groupId>org.slf4j</groupId>
  100. <artifactId>slf4j-api</artifactId>
  101. <version>1.7.22</version>
  102. </dependency>
  103. <dependency>
  104. <groupId>org.slf4j</groupId>
  105. <artifactId>jcl-over-slf4j</artifactId>
  106. <version>1.7.22</version>
  107. <scope>runtime</scope>
  108. </dependency>
  109. <dependency>
  110. <groupId>org.slf4j</groupId>
  111. <artifactId>slf4j-log4j12</artifactId>
  112. <version>1.7.22</version>
  113. <scope>runtime</scope>
  114. </dependency>
  115. <dependency>
  116. <groupId>log4j</groupId>
  117. <artifactId>log4j</artifactId>
  118. <version>1.2.14</version>
  119. <scope>runtime</scope>
  120. </dependency>
  121. <dependency>
  122. <groupId>org.springframework.amqp</groupId>
  123. <artifactId>spring-amqp</artifactId>
  124. <version>${spring.amqp.version}</version>
  125. <exclusions>
  126. <exclusion>
  127. <groupId>org.springframework</groupId>
  128. <artifactId>spring-core</artifactId>
  129. </exclusion>
  130. </exclusions>
  131. </dependency>
  132. <dependency>
  133. <groupId>org.springframework.amqp</groupId>
  134. <artifactId>spring-rabbit</artifactId>
  135. <version>${spring.amqp.version}</version>
  136. <exclusions>
  137. <exclusion>
  138. <groupId>org.springframework</groupId>
  139. <artifactId>spring-core</artifactId>
  140. </exclusion>
  141. <exclusion>
  142. <groupId>org.springframework</groupId>
  143. <artifactId>spring-messaging</artifactId>
  144. </exclusion>
  145. <exclusion>
  146. <groupId>org.springframework</groupId>
  147. <artifactId>spring-tx</artifactId>
  148. </exclusion>
  149. <exclusion>
  150. <groupId>org.springframework</groupId>
  151. <artifactId>spring-context</artifactId>
  152. </exclusion>
  153. </exclusions>
  154. </dependency>
  155.  
  156. </dependencies>
  157.  
  158. <build>
  159. <finalName>rabbitmq</finalName>
  160. <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
  161. <plugins>
  162. <plugin>
  163. <artifactId>maven-clean-plugin</artifactId>
  164. <version>3.0.0</version>
  165. </plugin>
  166. <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
  167. <plugin>
  168. <artifactId>maven-resources-plugin</artifactId>
  169. <version>3.0.2</version>
  170. </plugin>
  171. <plugin>
  172. <artifactId>maven-compiler-plugin</artifactId>
  173. <version>3.7.0</version>
  174. </plugin>
  175. <plugin>
  176. <artifactId>maven-surefire-plugin</artifactId>
  177. <version>2.20.1</version>
  178. </plugin>
  179. <plugin>
  180. <artifactId>maven-war-plugin</artifactId>
  181. <version>3.2.0</version>
  182. </plugin>
  183. <plugin>
  184. <artifactId>maven-install-plugin</artifactId>
  185. <version>2.5.2</version>
  186. </plugin>
  187. <plugin>
  188. <artifactId>maven-deploy-plugin</artifactId>
  189. <version>2.8.2</version>
  190. </plugin>
  191. </plugins>
  192. </pluginManagement>
  193. </build>
  194. </project>

2. 配置基础信息

  rabbitMQ.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns:rabbit="http://www.springframework.org/schema/rabbit"
  4. xsi:schemaLocation="http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit.xsd
  5. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  6.  
  7. <!--配置connection-->
  8. <rabbit:connection-factory id="connectionFactory" host="127.0.0.1" port="5672" username="wangx" password="wangx" virtual-host="/wangx"/>
  9.  
  10. <!--使用admin管理factory-->
  11. <rabbit:admin connection-factory="connectionFactory"/>
  12. <!--定义模板,并指定交换机或queue-->
  13. <rabbit:template id="rabbitTemplate" connection-factory="connectionFactory" exchange="spring-exchange"/>
  14. <!--定义消费者所对应的key-->
  15. <rabbit:queue name="spring-queue" auto-declare="true"/>
  16. <!--声明fanout的交换机-->
  17. <rabbit:fanout-exchange name="spring-exchange" auto-declare="true">
  18. <rabbit:bindings>
  19. <rabbit:binding queue="spring-queue"/>
  20. </rabbit:bindings>
  21. </rabbit:fanout-exchange>
  22.  
  23. <!--声明监听容器-->
  24. <rabbit:listener-container connection-factory="connectionFactory">
  25. <!--指定监听器所对应的bean和方法-->
  26. <rabbit:listener ref="consumer" method="listen" queue-names="spring-queue"/>
  27. </rabbit:listener-container>
  28. <!--消费者监听方法-->
  29. <bean id="consumer" class="com.wangx.rabbitmq.spring.Consumer"/>
  30. </beans>

  消费者:

  Consumer

  1. package com.wangx.rabbitmq.spring;
  2.  
  3. public class Consumer {
  4.  
  5. //对应监听器中所指定的method
  6. public void listen(String msg) {
  7. System.out.println("Spring Consumer 接收到消息:" + msg);
  8. }
  9. }

  发送消息:

  1. package com.wangx.rabbitmq.spring;
  2.  
  3. import org.springframework.amqp.core.Message;
  4. import org.springframework.amqp.core.MessageProperties;
  5. import org.springframework.amqp.rabbit.core.RabbitTemplate;
  6. import org.springframework.context.ApplicationContext;
  7. import org.springframework.context.support.ClassPathXmlApplicationContext;
  8.  
  9. public class Producer {
  10. public static void main(String[] args) {
  11. //读取配置文件
  12. ApplicationContext context = new ClassPathXmlApplicationContext("rabbitMQ.xml");
  13. //获取模板类
  14. RabbitTemplate template = context.getBean(RabbitTemplate.class);
  15. String str = "Spring-message";
  16. //构建MessageProperties对象
  17. MessageProperties messageProperties = new MessageProperties();
  18. //设置参数
  19. messageProperties.setContentEncoding("UTF-8");
  20. messageProperties.setContentType("text/plain");
  21. //构建消息对象
  22. Message message = new Message(str.getBytes(), messageProperties);
  23. //使用模板发送消息
  24. template.send(message);
  25. }
  26. }

  注意:

  1. messageProperties.setContentEncoding("UTF-8");
  2. messageProperties.setContentType("text/plain");
    这两个参数必须要配置,否则会报如下异常:
  1. D:\devsoft\jdk1.8\jdk1.8\bin\java.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:58888,suspend=y,server=n -javaagent:C:\Users\xing.wang\.IntelliJIdea2018.1\system\captureAgent\debugger-agent.jar=file:/C:/Users/xing.wang/AppData/Local/Temp/capture.props -Dfile.encoding=UTF-8 -classpath "D:\devsoft\jdk1.8\jdk1.8\jre\lib\charsets.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\deploy.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\ext\access-bridge-64.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\ext\cldrdata.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\ext\dnsns.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\ext\jaccess.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\ext\jfxrt.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\ext\localedata.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\ext\nashorn.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\ext\sunec.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\ext\sunjce_provider.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\ext\sunmscapi.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\ext\sunpkcs11.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\ext\zipfs.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\javaws.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\jce.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\jfr.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\jfxswt.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\jsse.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\management-agent.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\plugin.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\resources.jar;D:\devsoft\jdk1.8\jdk1.8\jre\lib\rt.jar;D:\dev-idea\middle\rabbitmq\target\classes;D:\repository\com\rabbitmq\amqp-client\5.5.0\amqp-client-5.5.0.jar;D:\repository\org\slf4j\slf4j-api\1.7.22\slf4j-api-1.7.22.jar;D:\repository\org\slf4j\slf4j-simple\1.8.0-beta2\slf4j-simple-1.8.0-beta2.jar;D:\repository\org\springframework\spring-core\4.3.9.RELEASE\spring-core-4.3.9.RELEASE.jar;D:\repository\org\springframework\spring-context\4.3.9.RELEASE\spring-context-4.3.9.RELEASE.jar;D:\repository\org\springframework\spring-aop\4.3.9.RELEASE\spring-aop-4.3.9.RELEASE.jar;D:\repository\org\springframework\spring-beans\4.3.9.RELEASE\spring-beans-4.3.9.RELEASE.jar;D:\repository\org\springframework\spring-expression\4.3.9.RELEASE\spring-expression-4.3.9.RELEASE.jar;D:\repository\org\springframework\spring-messaging\4.3.9.RELEASE\spring-messaging-4.3.9.RELEASE.jar;D:\repository\org\springframework\spring-tx\4.3.9.RELEASE\spring-tx-4.3.9.RELEASE.jar;D:\repository\cglib\cglib-nodep\2.2\cglib-nodep-2.2.jar;D:\repository\org\slf4j\jcl-over-slf4j\1.7.22\jcl-over-slf4j-1.7.22.jar;D:\repository\org\slf4j\slf4j-log4j12\1.7.22\slf4j-log4j12-1.7.22.jar;D:\repository\log4j\log4j\1.2.14\log4j-1.2.14.jar;D:\repository\org\springframework\amqp\spring-amqp\2.1.1.RELEASE\spring-amqp-2.1.1.RELEASE.jar;D:\repository\org\springframework\retry\spring-retry\1.2.2.RELEASE\spring-retry-1.2.2.RELEASE.jar;D:\repository\org\springframework\amqp\spring-rabbit\2.1.1.RELEASE\spring-rabbit-2.1.1.RELEASE.jar;D:\devsoft\idea\IntelliJ IDEA 2018.1.4\lib\idea_rt.jar" com.wangx.rabbitmq.spring.Producer
  2. Connected to the target VM, address: '127.0.0.1:58888', transport: 'socket'
  3. INFO [t.support.ClassPathXmlApplicationContext]: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@3fee9989: startup date [Mon Nov 19 16:22:38 CST 2018]; root of context hierarchy
  4. INFO [eans.factory.xml.XmlBeanDefinitionReader]: Loading XML bean definitions from class path resource [rabbitMQ.xml]
  5. INFO [ontext.support.DefaultLifecycleProcessor]: Starting beans in phase 2147483647
  6. INFO [bbit.connection.CachingConnectionFactory]: Attempting to connect to: 127.0.0.1:5672
  7. INFO [bbit.connection.CachingConnectionFactory]: Created new connection: connectionFactory#47caedad:0/SimpleConnection@2c4d1ac [delegate=amqp://wangx@127.0.0.1:5672//wangx, localPort= 58894]
  8. WARN [istener.ConditionalRejectingErrorHandler]: Execution of Rabbit message listener failed.
  9. org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Failed to invoke target method 'listen' with argument type = [class [B], value = [{[B@3f099764}]
  10. at org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter.invokeListenerMethod(MessageListenerAdapter.java:387)
  11. at org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter.onMessage(MessageListenerAdapter.java:292)
  12. at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:1511)
  13. at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.actualInvokeListener(AbstractMessageListenerContainer.java:1434)
  14. at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:1421)
  15. at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:1400)
  16. at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:848)
  17. at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:832)
  18. at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$700(SimpleMessageListenerContainer.java:78)
  19. at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1073)
  20. at java.lang.Thread.run(Thread.java:748)
  21. Caused by: java.lang.NoSuchMethodException: com.wangx.rabbitmq.spring.Consumer.listen([B)
  22. at java.lang.Class.getMethod(Class.java:1786)
  23. at org.springframework.util.MethodInvoker.prepare(MethodInvoker.java:174)
  24. at org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter.invokeListenerMethod(MessageListenerAdapter.java:365)
  25. ... 10 more
  26. WARN [ingErrorHandler$DefaultExceptionStrategy]: Fatal message conversion error; message rejected; it will be dropped or routed to a dead letter exchange, if so configured: (Body:'[B@3f099764(byte[14])' MessageProperties [headers={}, contentType=application/octet-stream, contentLength=0, receivedDeliveryMode=PERSISTENT, priority=0, redelivered=false, receivedExchange=spring-exchange, receivedRoutingKey=, deliveryTag=1, consumerTag=amq.ctag-ZbVlvRKHCdm3KFhzW5uu8A, consumerQueue=spring-queue])
  27. ERROR [.listener.SimpleMessageListenerContainer]: Execution of Rabbit message listener failed, and the error handler threw an exception
  28. org.springframework.amqp.AmqpRejectAndDontRequeueException: Error Handler converted exception to fatal
  29. at org.springframework.amqp.rabbit.listener.ConditionalRejectingErrorHandler.handleError(ConditionalRejectingErrorHandler.java:106)
  30. at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeErrorHandler(AbstractMessageListenerContainer.java:1334)
  31. at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.handleListenerException(AbstractMessageListenerContainer.java:1585)
  32. at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:1415)
  33. at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:848)
  34. at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:832)
  35. at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$700(SimpleMessageListenerContainer.java:78)
  36. at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1073)
  37. at java.lang.Thread.run(Thread.java:748)
  38. Caused by: org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Failed to invoke target method 'listen' with argument type = [class [B], value = [{[B@3f099764}]
  39. at org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter.invokeListenerMethod(MessageListenerAdapter.java:387)
  40. at org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter.onMessage(MessageListenerAdapter.java:292)
  41. at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:1511)
  42. at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.actualInvokeListener(AbstractMessageListenerContainer.java:1434)
  43. at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:1421)
  44. at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:1400)
  45. ... 5 more
  46. Caused by: java.lang.NoSuchMethodException: com.wangx.rabbitmq.spring.Consumer.listen([B)
  47. at java.lang.Class.getMethod(Class.java:1786)
  48. at org.springframework.util.MethodInvoker.prepare(MethodInvoker.java:174)
  49. at org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter.invokeListenerMethod(MessageListenerAdapter.java:365)
  50. ... 10 more
  1.  

RabbitMQ学习笔记(5)----RabbitMQ整合Spring的更多相关文章

  1. [RabbitMQ学习笔记] - 初识RabbitMQ

    RabbitMQ是一个由erlang开发的AMQP的开源实现. 核心概念 Message 消息,消息是不具名的,它由消息头和消息体组成,消息体是不透明的,而消息头则由 一系列的可选属性组成,这些属性包 ...

  2. Mybatis学习笔记(八) —— Mybatis整合spring

    一.整合思路 1.SqlSessionFactory对象应该放到spring容器中作为单例存在. 2.传统dao的开发方式中,应该从spring容器中获得sqlsession对象. 3.Mapper代 ...

  3. RabbitMQ学习笔记五:RabbitMQ之优先级消息队列

    RabbitMQ优先级队列注意点: 1.只有当消费者不足,不能及时进行消费的情况下,优先级队列才会生效 2.RabbitMQ3.5以后才支持优先级队列 代码在博客:RabbitMQ学习笔记三:Java ...

  4. RabbitMQ学习笔记(五) Topic

    更多的问题 Direct Exchange帮助我们解决了分类发布与订阅消息的问题,但是Direct Exchange的问题是,它所使用的routingKey是一个简单字符串,这决定了它只能按照一个条件 ...

  5. RabbitMQ学习笔记1-hello world

    安装过程略过,一搜一大把. rabbitmq管理控制台:http://localhost:15672/   默认账户:guest/guest RabbitMQ默认监听端口:5672 JAVA API地 ...

  6. (转) Rabbitmq学习笔记

    详见原文: http://blog.csdn.net/shatty/article/details/9529463 Rabbitmq学习笔记

  7. 官网英文版学习——RabbitMQ学习笔记(十)RabbitMQ集群

    在第二节我们进行了RabbitMQ的安装,现在我们就RabbitMQ进行集群的搭建进行学习,参考官网地址是:http://www.rabbitmq.com/clustering.html 首先我们来看 ...

  8. 官网英文版学习——RabbitMQ学习笔记(一)认识RabbitMQ

    鉴于目前中文的RabbitMQ教程很缺,本博主虽然买了一本rabbitMQ的书,遗憾的是该书的代码用的不是java语言,看起来也有些不爽,且网友们不同人学习所写不同,本博主看的有些地方不太理想,为此本 ...

  9. Spring框架学习笔记(5)——Spring Boot创建与使用

    Spring Boot可以更为方便地搭建一个Web系统,之后服务器上部署也较为方便 创建Spring boot项目 1. 使用IDEA创建项目 2. 修改groupid和artifact 3. 一路n ...

  10. Spring实战第四章学习笔记————面向切面的Spring

    Spring实战第四章学习笔记----面向切面的Spring 什么是面向切面的编程 我们把影响应用多处的功能描述为横切关注点.比如安全就是一个横切关注点,应用中许多方法都会涉及安全规则.而切面可以帮我 ...

随机推荐

  1. JavaEE el表达式中三目运算符的使用

    也可以通过在bean对象中写getter方法通过对象.属性进行调用

  2. SVN仓库导入文件

    分两种: 1.导入文件版本库从0开始 (适合新项目) 2.将其他SVN服务器中的版本库导入进来,版本库继承原SVN服务器的(适合SVN版本库迁移) 第一种: #mkdir –p /home/code/ ...

  3. PHP学习总结(12)——PHP入门篇之变量

    一.什么是变量 变量是用于存储值的,我们命令服务器去干活的时候,往往需要产生一些数据,需要临时性存放起来,方便取用.我们也可以理解为,变量就像一个购物袋,我们可以用来装苹果.榴莲(当然也可以用来装玫瑰 ...

  4. SCU - 4110 - PE class

    先上题目: 4110: PE class Submit your solution     Discuss this problem     Best solutions   Description ...

  5. 项目 cmdb(一)

    Django之ModelForm组件 ModelForm    a.  class Meta:            model,                           # 对应Mode ...

  6. Spring MVC-表单(Form)标签-密码框(Password)示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_password.htm 说明:示例基于Spring MVC 4.1.6. 以下示 ...

  7. junit4单元测试基础

    导入方法看如下截图就明白了:   新建测试用例 右击包名,点击新建,或者新建里的others,选择JUnit test case,如下图所示:   接下来,给测试类起名字和选择要测试的类,如下图所示: ...

  8. Android之——自己主动挂断电话的实现

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47072451 通过<Android之--AIDL小结>与<And ...

  9. POJ 2553 The Bottom of a Graph(强连通分量)

    POJ 2553 The Bottom of a Graph 题目链接 题意:给定一个有向图,求出度为0的强连通分量 思路:缩点搞就可以 代码: #include <cstdio> #in ...

  10. 【POJ 1830】 开关问题

    [题目链接] http://poj.org/problem?id=1830 [算法] 列出异或方程组,用高斯消元求解 [代码] #include <algorithm> #include ...