返回顶部
首页 > 资讯 > 后端开发 > Python >RabbitMQ学习及实践3--Spr
  • 154
分享到

RabbitMQ学习及实践3--Spr

RabbitMQSpr 2023-01-31 07:01:20 154人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

    根据学习的RabbitMQ知识配了一个springMVC的实现。这是一个完整的工程,view的部分使用freeMarker,持久化操作是通过mybatis实现。    整个工程的目录结构如下:src下的相关包的解释:    cont

    根据学习RabbitMQ知识配了一个springMVC的实现。这是一个完整的工程,view的部分使用freeMarker,持久化操作是通过mybatis实现。

    整个工程的目录结构如下:


wKioL1OtNSKycoNSAAFj9sPYmU0740.jpg

src下的相关包的解释:

    controller:控制器;

    domain:对应数据库的操作对象类;

    persistence:mybatis的持久化操作;

    util:相关工具类;

    msg.bean:消息类,定义及描述消息体;

    msg.convert:实现如何转化消息体为可接受的消息类;

    msg.process:处理器,负责接受到消息后如何处理;

    msg.service:包括sender及listener的实现,用于完成发送和接受消息。

config目录存储相关配置文件。


1、配置

    WEB.xml配置,主要配置spring及spring mvc

    <display-name>springRabbit</display-name>
    <!-- Spring 容器加载的配置文件 设置 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext*.xml</param-value>
    </context-param>
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
    </context-param>
    <!--Spring默认刷新Log4j配置文件的间隔,单位为millisecond -->
    <context-param>
        <param-name>log4jRefreshInterval</param-name>
        <param-value>60000</param-value>
    </context-param>
    <!-- Spring 配置 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>
    <!-- Spring MVC 配置 -->
    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:/applicationContext-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springDispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

对于springMVC的配置这里不再赘述,本文主要描述的是RabbitMQ的配置,故此处只详细描述RabbitMQ的配置:

applicationContext-mq.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="Http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:rabbit="http://www.springframework.org/schema/rabbit"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/rabbit                
        http://www.springframework.org/schema/rabbit/spring-rabbit-1.2.xsd">
    <!-- common configuration  start-->
    <!-- 连接服务配置  -->
    <rabbit:connection-factory id="connectionFactory"
        host="localhost" username="guest" passWord="guest" port="5672" />
    <rabbit:admin connection-factory="connectionFactory" />
    <!-- queue 队列声明-->
    <rabbit:queue id="neilyan" durable="true" auto-delete="false"
        exclusive="false" name="neilyan" />
    <!-- exchange queue binging key 绑定 -->
    <rabbit:direct-exchange name="my-mq-exchange"
        durable="true" auto-delete="false" id="my-mq-exchange">
        <rabbit:bindings>
            <rabbit:binding queue="neilyan" key="neilyan_key" />
        </rabbit:bindings>
    </rabbit:direct-exchange>
    <bean id="JSONMessageConverter" class="com.neilyan.msg.convert.jsonMessageConverter"></bean>
    <!-- spring template声明-->
    <rabbit:template exchange="my-mq-exchange" id="amqpTemplate"
        connection-factory="connectionFactory" message-converter="jsonMessageConverter" />
    <!-- amqp template 可根据不同业务分为不同template-->
    <rabbit:template id="testTemplate" connection-factory="connectionFactory"
        message-converter="jsonMessageConverter" reply-timeout="2000"
        routing-key="neilyan_key" exchange="my-mq-exchange" />
        
    <!-- common configuration  end-->
    <!-- sender  start-->
    <!-- sender  可根据不同业务分为不同sender-->
    <bean id="testSender"
        class="com.neilyan.msg.service.impl.AmqpMessageSenderImpl">
        <property name="amqpTemplate" ref="testTemplate" />
    </bean>
    <!-- sender中的一种,独立出来是为了发送添加错误code的信息 -->
    <bean id="errORMsgSender"
        class="com.neilyan.msg.service.impl.AmqpMessageSenderImpl">
        <property name="amqpTemplate" ref="testTemplate" />
    </bean>
    <!-- sender service -->
    <bean id="testSendService"
        class="com.neilyan.msg.service.sendservice.impl.TestMessageSendServiceImpl">
        <property name="messageSender" ref="testSender" />
    </bean>
    
    <!-- sender  end-->
     <!-- processor 这里可以处理响应的业务类型-->
    <bean id="testMessageProcessor" class="com.neilyan.msg.process.UserMessageProcessorImpl">
    </bean>
    
    <!-- receiver  start-->
    
    <!-- listener -->
    <bean id="testMessageListener" class="com.neilyan.msg.service.impl.AmqpMessageListenerImpl">
        <property name="messageProcessor" ref="testMessageProcessor" />
        <property name="messageConverter" ref="jsonMessageConverter" />
        <property name="errorMsgSender" ref="errorMsgSender" />
    </bean>
    
    <!-- queue litener  观察 监听模式 当有消息到达时会通知监听在对应的队列上的监听对象-->
    <rabbit:listener-container connection-factory="connectionFactory" concurrency="2" channel-transacted="false" acknowledge="auto">
        <rabbit:listener queues="neilyan" ref="testMessageListener" method="onMessage" />
    </rabbit:listener-container>
    
    <!-- receiver  end-->
</beans>

因为本工程吧sender和receiver的功能都融合在一起了,所以在配置中可以看到同时有sender和receiver的单独配置,以及公共的配置。单独配置其实是一样的,只需要分成两个工程,代码和配置分开就是了。可参考以下文章:http://my.oschina.net/never/blog/140368


对类及配置的具体的、详细的描述在本文就不描写了,实在是太多了,写起来可能过于详细,但是对于开发过springMVC项目的人来说,看了源码就应该能轻松搞定的。


本来想上传源码的,但是本博客系统只能接受2M以下的附件。那就把源码上传到我的资料里了!

--结束END--

本文标题: RabbitMQ学习及实践3--Spr

本文链接: https://lsjlt.com/news/191234.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • RabbitMQ学习及实践3--Spr
        根据学习的RabbitMQ知识配了一个SpringMVC的实现。这是一个完整的工程,view的部分使用freeMarker,持久化操作是通过mybatis实现。    整个工程的目录结构如下:src下的相关包的解释:    cont...
    99+
    2023-01-31
    RabbitMQ Spr
  • MYSLQ 增量恢复学习及实践
    MYSQL的架构一般都是一主多从 或是双主高可用模式,物理故障不需要增量恢复什么情况需要增量恢复?一般是由人为引起的误操作才需要增量恢复。增量恢复的必需要满足的条件1)开启MYSQL log-bin 日志功...
    99+
    2024-04-02
  • python学习3-python变量以及
    一、变量变量格式:变量名 = 变量值 例子:[root@localhost~]# pythonPython2.7 (r27:82500, Jul 28 2016, 02:42:00) [GCC4.4.7 20120313 (Red Hat ...
    99+
    2023-01-31
    变量 python
  • PHP - PHP-FPM - 学习/实践
    应用场景 主要用于弄清楚Nginx+PHP-FPM的运行机制,以及各种配置使用和优化,帮助开发项目。 学习/操作 1.文档阅读 Nginx-->进阶-->原理-->Nginx+php+fastcgi的原理与关系 -...
    99+
    2023-09-06
    php-fpm Nginx 配置
  • Python机器学习及实践+从零开始通往
    内容简介   本书面向所有对机器学习与数据挖掘的实践及竞赛感兴趣的读者,从零开始,以Python编程语言为基础,在不涉及大量数学模型与复杂编程知识的前提下,逐步带领读者熟悉并且掌握当下最流行的机器学习、数据挖掘与自然语言处理工具...
    99+
    2023-01-31
    从零开始 机器 Python
  • Symantec NetBackup备份学习实践
    记在南京某公司从事系统集成已有半年之久,在这半年期间学习了各方面的的知识体系。由于最近公司项目需要,部门领导给我开小灶培训学习NBU原理体系结构,自己也在之后捣鼓了几天,对NBU有了更深一步的了解,在此深深...
    99+
    2024-04-02
  • 基于Python的EasyGUI学习实践
    01_msgbox # 使用easygui功能,可以直接导入easygui模块 import easygui # 需要弹框时,要使用easygui。 # msgbox(m)方法,输出带有m内容的信息框。 # m...
    99+
    2022-06-02
    Python EasyGUI
  • FluentMybatis学习之Update语法实践
    目录前言数据准备Update语法简单的写法UpdateByEntity根据表实体更新数据UpdateByExclude根据表实体排除更新数据applyFunc总结前言 本篇文章主要针...
    99+
    2024-04-02
  • Microservice/微服务「PHP」 - Hyperf 学习/实践
    应用场景 主要用于学习PHP RPC框架Hyperf,进行微服务的架构开发,实现高性能,高并发系统服务。 学习/操作 1.文档阅读 Swoole 框架 - 学习/实践_william_n的博客-CSDN博客Hyp...
    99+
    2023-09-06
    php 微服务 rpc
  • docker 学习-- 04 实践2 (lnpmr环境)
    docker 学习 系列文章目录 docker 学习-- 01 基础知识 docker 学习-- 02 常用命令 docker 学习-- 03 环境安装 docker 学习-- 04 实践 1(宝塔) docker 学习-- 04 实践 2...
    99+
    2023-08-30
    docker 学习 容器
  • Python Pytorch学习之图像检索实践
    目录背景图像表现搜索随着电子商务和在线网站的出现,图像检索在我们的日常生活中的应用一直在增加。 亚马逊、阿里巴巴、Myntra等公司一直在大量利用图像检索技术。当然,只有当通常的信息...
    99+
    2024-04-02
  • Golang 正则表达式学习与实践
    答案:go 语言的正则表达式功能强大,语法遵循 perl 变体,包括元字符、量词、字符组、分组,可用于模式匹配。实战案例:验证电子邮件地址:使用正则表达式验证电子邮件地址是否有效。替换字...
    99+
    2024-04-08
    golang 正则表达式
  • 《深度实践KVM》目录、前言、及前3章
    我们的新书《深度实践KVM》目录、前言、及前3章图片版稍微有点不清晰,pdf版下载地址:http://pan.baidu.com/s/1o6J1xfs欢迎加入云技术社区KVM/QEMU技术交流QQ,请加QQ:502207183,注明姓名,城...
    99+
    2023-01-31
    前言 深度 目录
  • 从实践中学习:Golang面向对象编程的最佳实践
    从实践中学习:Golang面向对象编程的最佳实践 随着Golang(Go语言)在近年来的应用越来越广泛,越来越多的开发者开始探索Golang的面向对象编程(OOP)特性。尽管Golan...
    99+
    2024-02-28
    实践 golang 面向对象 go语言
  • Python Type Hints 学习之从入门到实践
    Python 想必大家都已经很熟悉了,甚至关于它有用或者无用的论点大家可能也已经看腻了。但是无论如何,它作为一个广受关注的语言还是有它独到之处的,今天我们就再展开聊聊 Python。...
    99+
    2024-04-02
  • 学习PHP中success方法的最佳实践
    学习PHP中success方法的最佳实践,需要具体代码示例 PHP是一种流行的服务器端脚本语言,被广泛应用于Web开发领域。在PHP中,success方法是一种常见的用于判断操作成功与...
    99+
    2024-04-02
  • 深度学习实验3 - 卷积神经网络
    文章目录 实验要求数据集定义1 手写二维卷积1.1 自定义卷积通道1.2 自定义卷积层1.3 添加卷积层导模块中1.4 定义超参数1.5 初始化模型、损失函数、优化器1.6 定义模型训练和测试...
    99+
    2023-09-02
    深度学习 cnn python
  • 学习python:实例3.终端版拼图游戏
    效果:输入数字进行移动,当数字排列成为【1,2,3,4,5,6,7,8】游戏胜利!代码:# 拼图 from sys import exit from os import system from random import shuffle ...
    99+
    2023-01-31
    终端 实例 拼图游戏
  • Git响应教程:学习Python的最佳实践。
    Git响应教程:学习Python的最佳实践 在当今的软件开发领域中,Git已经成为了版本控制系统的首选。而Python则是一门广泛应用于各种领域的编程语言。在Python开发过程中,使用Git进行版本控制可以大大提高开发效率和代码质量。本文...
    99+
    2023-10-17
    git 响应 教程
  • 高效学习与实践go语言的策略
    学习策略: 掌握基础语法和语义:熟悉 Go 语言的基础语法和语义,包括变量、常量、数据类型、运算符、控制流语句、函数等。这为后续学习和实践打下坚实的基础。 熟悉 Go 语言的内置包:Go 语言提供了丰富...
    99+
    2024-02-01
    go语言 快速学习 实践策略
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作