`
fushcpc
  • 浏览: 24348 次
社区版块
存档分类
最新评论

Job

    博客分类:
  • J2EE
 
阅读更多
package org.apache.activemq.book.ch2.jobs;

import javax.jms.Connection;

public class Producer {

    private static String brokerURL = "tcp://localhost:61616";
    private static transient ConnectionFactory factory;
    private transient Connection connection;
    private transient Session session;
    private transient MessageProducer producer;
    
    private static int count = 10;
    private static int total;
    private static int id = 1000000;
    
    private String jobs[] = new String[]{"suspend", "delete"};
    
    public Producer() throws JMSException {
    	factory = new ActiveMQConnectionFactory(brokerURL);
    	connection = factory.createConnection();
        connection.start();
        session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        producer = session.createProducer(null);
    }    
    
    public void close() throws JMSException {
        if (connection != null) {
            connection.close();
        }
    }    
    
	public static void main(String[] args) throws JMSException {
    	Producer producer = new Producer();
        while (total < 1000) {
            for (int i = 0; i < count; i++) {
                producer.sendMessage();
            }
            total += count;
            System.out.println("Sent '" + count + "' of '" + total + "' job messages");
            try {
              Thread.sleep(1000);
            } catch (InterruptedException x) {
            }
          }
        producer.close();

	}
	
    public void sendMessage() throws JMSException {
        int idx = 0;
        while (true) {
            idx = (int)Math.round(jobs.length * Math.random());
            if (idx < jobs.length) {
                break;
            }
        }
        String job = jobs[idx];
        Destination destination = session.createQueue("JOBS." + job);
        Message message = session.createObjectMessage(id++);
        System.out.println("Sending: id: " + ((ObjectMessage)message).getObject() + " on queue: " + destination);
        producer.send(destination, message);
    }	

}



package org.apache.activemq.book.ch2.jobs;

import javax.jms.Connection;

public class Consumer {

    private static String brokerURL = "tcp://localhost:61616";
    private static transient ConnectionFactory factory;
    private transient Connection connection;
    private transient Session session;
    
    private String jobs[] = new String[]{"suspend", "delete"};
    
    public Consumer() throws JMSException {
    	factory = new ActiveMQConnectionFactory(brokerURL);
    	connection = factory.createConnection();
        connection.start();
        session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    }
    
    public void close() throws JMSException {
        if (connection != null) {
            connection.close();
        }
    }    
    
    public static void main(String[] args) throws JMSException {
    	Consumer consumer = new Consumer();
    	for (String job : consumer.jobs) {
    		Destination destination = consumer.getSession().createQueue("JOBS." + job);
    		MessageConsumer messageConsumer = consumer.getSession().createConsumer(destination);
    		messageConsumer.setMessageListener(new Listener(job));
    	}
    }
	
	public Session getSession() {
		return session;
	}


}



package org.apache.activemq.book.ch2.jobs;

import javax.jms.Message;

public class Listener implements MessageListener {

	private String job;
	
	public Listener(String job) {
		this.job = job;
	}

	public void onMessage(Message message) {
		try {
			//do something here
			System.out.println(job + " id:" + ((ObjectMessage)message).getObject());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

分享到:
评论

相关推荐

    分布式调度xxl-job

    分布式调度XXL-Job是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。XXL-Job占有率很高,是近几年大量流行的技术,可以作为公司内部培训技术分享必备知识。 知识点一:XXL-Job的...

    xxl-job适配达梦数据库

    XXL-JOB是一款轻量级分布式任务调度平台,它提供了简单易用的API接口和Web管理界面,使得开发者可以方便地实现任务的分布式调度。在本案例中,我们关注的是如何将XXL-JOB与达梦数据库(DM8)进行适配。达梦数据库...

    elasticjob中文文档

    ElasticJob是一个分布式调度解决方案,它基于Quartz和Zookeeper进行扩展,设计用于处理大规模分布式任务的调度问题。ElasticJob提供了两种产品,分别是ElasticJob-Lite和ElasticJob-Cloud。ElasticJob-Lite适用于对...

    SpringBoot2整合ElasticJob框架过程详解

    "SpringBoot2整合ElasticJob框架过程详解" 本文主要介绍了SpringBoot2整合ElasticJob框架的过程详解,从ElasticJob的简介、基础框架结构、分片管理、个性化参数到定时任务加载、核心依赖包、核心配置文件、自定义...

    ORACLE如何停止一个JOB

    ### ORACLE如何停止一个JOB:深入解析与实践 在Oracle数据库管理中,有时我们需要停止正在运行的JOB,这可能是由于各种原因,如发现错误、优化性能或调整资源分配。本文将详细阐述如何在Oracle中查询并停止正在运行...

    jobHandler调度器

    "JobHandler调度器"是一种广泛应用于分布式任务调度的框架,主要设计用于处理大规模并发和定时任务的场景。在这个系统中,JobHandler是核心组件,它负责执行具体的业务逻辑。下面我们将详细探讨JobHandler调度器的...

    传参数给job及job状态学习

    标题中的“传参数给job及job状态学习”指的是在使用Quartz Scheduler进行任务调度时,如何传递参数给Job以及理解Job的状态管理。Quartz Scheduler是一个开源的Java作业调度框架,它允许程序创建、安排和执行重复的...

    XXL-JOB分布式任务调度系统培训PPT

    "XXL-JOB分布式任务调度系统培训PPT" XXL-JOB分布式任务调度系统是当前 Java 生态中的一种流行的分布式任务调度系统。它提供了多种功能特性,如支持 cron 表达式、支持多种任务类型、支持任务优先级、支持任务依赖...

    xxl-job-2.2.0.zip

    XXL-JOB是一个分布式任务调度平台,其2.2.0版本包含了大量的功能改进和优化。这个源码压缩包提供了一个深入理解XXL-JOB工作原理的机会,对于开发者来说是宝贵的资源,尤其对于那些需要自定义扩展或者进行二次开发的...

    xxl-job oracle 适配版本

    XXL-JOB是一款轻量级分布式任务调度平台,它提供了简单易用的Web管理界面,支持灵活的任务配置和丰富的调度策略。在这个“xxl-job oracle 适配版本”中,我们主要关注的是XXL-JOB如何与Oracle数据库进行集成和优化。...

    xxl-job本地jar包

    XXL-JOB是一款分布式任务调度平台,主要特点在于其易用性、灵活性和扩展性,使得在企业级应用中管理定时任务变得简单。本压缩包文件"xxl-job-mine"可能包含了与XXL-JOB相关的本地配置和示例代码,帮助用户在本地环境...

    xxl-job整合mybatis&&mysql&&stringboot

    【xxl-job整合mybatis、mysql与springboot详解】 XXL-JOB是一个分布式任务调度平台,设计目标是轻量级、易用性好且扩展性强。它提供了Web控制台进行任务管理和执行,支持多种调度触发策略,如定时、依赖、手动触发...

    分布式调度任务XXL-JOB架构图

    分布式调度任务XXL-JOB架构图知识点 分布式调度任务XXL-JOB架构图是一种基于quartz调度器的分布式任务调度框架,旨在解决大规模任务的调度和执行问题。下面是该架构图中的关键知识点: 1. 分布式调度中心:XXL-JOB...

    将 xxl-job-admin、xxl-job-core、xxl-job-executor 的源码引入项目中.docx

    ### 将xxl-job-admin、xxl-job-core、xxl-job-executor的源码引入项目中的实践 在探讨如何将这三个组件(xxl-job-admin、xxl-job-core、xxl-job-executor)有效地引入到项目中之前,我们需要先了解它们各自的作用及...

    xxl-job集成springboot实战代码

    **xxl-job集成springboot实战代码** 在现代的微服务架构中,定时任务扮演着重要的角色,它们可以用于数据同步、报表生成、缓存更新等场景。`xxl-job`是一个分布式任务调度平台,它提供了易用的界面操作、稳定高效的...

    xxl-job-2.3.0.zip

    XXL-JOB是一款开源的分布式任务调度平台,其2.3.0版本提供了丰富的功能,旨在帮助开发者实现灵活、高效的任务调度。这个压缩包“xxl-job-2.3.0.zip”包含了XXL-JOB的源代码、配置文件、文档和其他相关资源,让我们...

    elasticjob分布式调度动态添加任务

    ElasticJob是一个由当当网开源的分布式任务调度框架,它基于阿里巴巴的Quartz Scheduler进行了扩展,旨在解决在分布式环境下,复杂任务调度的问题。ElasticJob主要分为两个部分:ElasticJob-Lite和ElasticJob-Cloud...

    Elastic-Job控制台2.1.5

    Elastic-Job是一个分布式任务调度框架,由两个子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。Elastic-Job-Lite是轻量级的解决方案,适合在私有云或物理服务器集群上使用;而Elastic-Job-Cloud则基于Mesos框架,更...

    XXL-JOB金仓版

    XXL-JOB是一款开源的任务调度框架,由xuxueli开发,主要应用于分布式系统中的任务调度。金仓数据库,又称为Kingbase,是中国自主研发的一款高性能、高可用的关系型数据库管理系统,常用于对数据处理性能有较高要求的...

    xxl-job-core-2.3.0-API文档-中文版.zip

    赠送jar包:xxl-job-core-2.3.0.jar 赠送原API文档:xxl-job-core-2.3.0-javadoc.jar 赠送源代码:xxl-job-core-2.3.0-sources.jar 包含翻译后的API文档:xxl-job-core-2.3.0-javadoc-API文档-中文(简体)版.zip ...

Global site tag (gtag.js) - Google Analytics