java编写rabbitmq的实现

1.创建一个项目

2.pom.xml

1

2

3

4

5

<dependency>

            <groupId>com.rabbitmq</groupId>

            <artifactId>amqp-client</artifactId>

            <version>3.0.4</version>

        </dependency>

 3.spring.xml

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?xml version="1.0" encoding="UTF-8"?>

 

<beans xmlns="http://www.springframework.org/schema/beans"

 xmlns:context="http://www.springframework.org/schema/context"

 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 xsi:schemaLocation="http://www.springframework.org/schema/beans

      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

      http://www.springframework.org/schema/context

      http://www.springframework.org/schema/context/spring-context.xsd"

      >

       

      <!-- 扫描文件(自动将servicec层注入) -->

    <context:component-scan base-package="com.guilf.project.service"/>

 </beans>

 4.RabbitMQUtil.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

/**

 *

 */

/**

 * @author DELL

 *

 */

package com.guilf.project.rabbitMQ.util;

 

import java.io.IOException;

 

import com.rabbitmq.client.Channel;

import com.rabbitmq.client.Connection;

import com.rabbitmq.client.ConnectionFactory;

import com.rabbitmq.client.QueueingConsumer;

 

public class RabbitMQUtil

{

    private final static String QUEUE_NAME = "guilfRabbitMQ";

 

    public static Connection getConnection()

    {

        ConnectionFactory factory = new ConnectionFactory();

        factory.setHost("192.168.88.134");//MQ的ip地址

        factory.setPort(5672);//mq的接口

        factory.setUsername("admin");//mq用户名

        factory.setPassword("admin");//mq密码

        Connection connection;

        try

        {

            connection = factory.newConnection();// 建立连接

            return connection;

        }

        catch (IOException e)

        {

            e.printStackTrace();

        }

        return null;

    }

 

    public static void getProducerRabbitMQ(Connection connection, String message)

    {

        // 创建一个通道

        Channel channel;

        try

        {

            channel = connection.createChannel();

            //申明一个队列,如果这个队列不存在,将会被创建

            channel.queueDeclare(QUEUE_NAME, falsefalsefalsenull);

            // 发送消息

            channel.basicPublish("", QUEUE_NAME, null, message.getBytes());

            channel.close();//关闭

            connection.close();//关闭

        }

        catch (IOException e)

        {

            e.printStackTrace();

        }

    }

 

    public static void getConsumerRabbitMQ(Connection connection)

    {

        // 创建一个通道

        Channel channel;

        try

        {

            channel = connection.createChannel();

            //申明一个队列,如果这个队列不存在,将会被创建

            channel.queueDeclare(QUEUE_NAME, falsefalsefalsenull);

            System.out.println("================等待消息产生:==============");

            // 创建消费者对象,用于读取消息

            QueueingConsumer queueingConsumer = new QueueingConsumer(channel);

            channel.basicConsume(QUEUE_NAME, true, queueingConsumer);

            // 读取队列,并且阻塞,在读到消息之前在这里阻塞,知道等到消息,完成消息的阅读后,继续阻塞循环

            while(true)

            {

                QueueingConsumer.Delivery delivery = queueingConsumer.nextDelivery();

                String message = new String(delivery.getBody());

                System.out.println("====s收到消息:====="+message+"==========");

            }

        }

        catch (Exception e)

        {

            e.printStackTrace();

        }

    }

}

 5 RabbitMQConsumerServiceImpl.java (还有一个接口) 消费

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

package com.guilf.project.service.impl;

 

import org.springframework.stereotype.Service;

import com.guilf.project.rabbitMQ.util.RabbitMQUtil;

import com.guilf.project.service.RabbitMQConsumerService;

import com.rabbitmq.client.Connection;

 

@Service("rabbitMQConsumerService")

public class RabbitMQConsumerServiceImpl implements RabbitMQConsumerService

{

    public String rabbitMQConsumer(String messger) throws Exception {

        Connection connection = RabbitMQUtil.getConnection();

        RabbitMQUtil.getConsumerRabbitMQ(connection);

        return messger;

    }

}

 6.RabbitMQProducerServiceImpl.java (还有一个接口)生产

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

package com.guilf.project.service.impl;

 

import org.springframework.stereotype.Service;

 

import com.guilf.project.rabbitMQ.util.RabbitMQUtil;

import com.guilf.project.service.RabbitMQProducerService;

import com.rabbitmq.client.Connection;

 

@Service("rabbitMQProducerService")

public class RabbitMQProducerServiceImpl implements RabbitMQProducerService

{

    public String rabbitMQProducer(String messger) throws Exception {

        Connection connection = RabbitMQUtil.getConnection();

        String message1 = messger;

        System.out.println("=============1========");

        RabbitMQUtil.getProducerRabbitMQ(connection, message1);

        System.out.println("=============2========");

        return messger;

    }

}

 7 RabbitMQTest.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

import org.junit.Test;

import org.junit.Before;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

 

import com.guilf.project.entity.User;

import com.guilf.project.service.RabbitMQConsumerService;

import com.guilf.project.service.RabbitMQProducerService;

import com.guilf.project.service.UserService;

 

 

 

 

public class RabbitMQTest

{

    private RabbitMQConsumerService rabbitMQConsumerService;

    private RabbitMQProducerService rabbitMQProducerService;

     

    @Before

    public void before(){                                                                  

        @SuppressWarnings("resource")

        ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:conf/spring.xml"});

        rabbitMQConsumerService = (RabbitMQConsumerService) context.getBean("rabbitMQConsumerService");

        rabbitMQProducerService = (RabbitMQProducerService) context.getBean("rabbitMQProducerService");

    }

 

    @Test

    public void testInsertUser1()

    {

         

        try {

            rabbitMQProducerService.rabbitMQProducer("guilfFirstRabbitMQ2");

        catch (Exception e) {

            e.printStackTrace();

        }

    }

   

    @Test

    public void testInsertUser()

    {

        try {

            rabbitMQConsumerService.rabbitMQConsumer("w");

        catch (Exception e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

 

}

 7.启动,可以直接传,也可以在mq上直接操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值