lambda表达式的应用

import javax.jms.*;
import java.util.ArrayList;
import java.util.List;

public class ListenerReceive {
public static void main(String[] args) {
receive();
List list=new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
System.out.println("");
for(int i:list){
System.out.println(i);
}
System.out.println("
");
list.forEach(i-> System.out.println(i));

}

private static void receive() {
    MessageConsumer consumer =null;
    Session session=null;
    Connection connection=null;
    try {
        //1.根据Broker地址创建连接工厂对象
        ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://192.168.31.128:61616");
        //2.创建连接对象
        connection=connectionFactory.createConnection();
        connection.start();//接收消息前前必须要start否则无法读取消息,线程会阻塞在receive()方法上
        //3.创建Session回话对象,
        // 参数1为是否使用事务性的消息 false表示不使用事务 true表示使用事务
        //参数2表示消息的确认机制,会影响消息的接收方法而不会影响发送方法Session.AUTO_ACKNOWLEDGE表示自动确认
        session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

        //4.创建一个目的地对象,createQueue创建一个基于点对点的目的地对象,参数为目的地名称,需要与发送时对应
        Destination destination=session.createQueue("myQueue");

        //5.创建消息的接收者 ,并设定从哪里获取消息
        consumer =session.createConsumer(destination);

// //6设置监听器,异步读取消息
// consumer.setMessageListener(new MessageListener() {
// public void onMessage(Message message) {
// if(message instanceof TextMessage){
// try {
// System.out.println(((TextMessage) message).getText());
// } catch (JMSException e) {
// e.printStackTrace();
// }
// }
// }
// });
/*
Lambda 表达式实现异步接收消息, 注意:Lambda必须在Java8或以上版本才可使用
Lambda 的目的是为了简化匿名内部类的实现,概念有点想JS中匿名方法参数,主要用于实现回调方法
Lambda 使用前提
1.当我们调用的某个方法中的参数列表的类型有接口类型
2.这个接口中必须只能有一个抽象方法是时
Lambda 语法1:
接口中的方法只有一个参数,我们对方法的实现只有一行代码,如果这个抽象方法拥有返回类型不需要添加return
形参 -> 方法体
语法2:
接口中的方法只有一个参数,形参列表必须添加(),
我们对方法的实现有多行代码,方法体必须添加{}
如果这个抽象方法拥有返回类型必须需要添加return
(形参1,形参2) -> { 方法体}

         */

        consumer.setMessageListener(messages->{
            if(messages instanceof  TextMessage){
                try {
                    System.out.println(((TextMessage) messages).getText());
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        });


        System.out.println("监听器启动完成");
    } catch (JMSException e) {
        e.printStackTrace();
    }


}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值