当前位置: 首页>>代码示例>>Java>>正文


Java RedeliveryPolicy.setInitialRedeliveryDelay方法代码示例

本文整理汇总了Java中org.apache.activemq.RedeliveryPolicy.setInitialRedeliveryDelay方法的典型用法代码示例。如果您正苦于以下问题:Java RedeliveryPolicy.setInitialRedeliveryDelay方法的具体用法?Java RedeliveryPolicy.setInitialRedeliveryDelay怎么用?Java RedeliveryPolicy.setInitialRedeliveryDelay使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.activemq.RedeliveryPolicy的用法示例。


在下文中一共展示了RedeliveryPolicy.setInitialRedeliveryDelay方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: testGetNext

import org.apache.activemq.RedeliveryPolicy; //导入方法依赖的package包/类
@Test
public void testGetNext() throws Exception {

   RedeliveryPolicy policy = new RedeliveryPolicy();
   policy.setInitialRedeliveryDelay(0);
   policy.setRedeliveryDelay(500);
   policy.setBackOffMultiplier((short) 2);
   policy.setUseExponentialBackOff(true);

   long delay = policy.getNextRedeliveryDelay(0);
   assertEquals(500, delay);
   delay = policy.getNextRedeliveryDelay(delay);
   assertEquals(500 * 2, delay);
   delay = policy.getNextRedeliveryDelay(delay);
   assertEquals(500 * 4, delay);

   policy.setUseExponentialBackOff(false);
   delay = policy.getNextRedeliveryDelay(delay);
   assertEquals(500, delay);
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:21,代码来源:RedeliveryPolicyTest.java

示例2: startBroker

import org.apache.activemq.RedeliveryPolicy; //导入方法依赖的package包/类
private void startBroker(boolean deleteMessages) throws Exception {
   broker = new BrokerService();
   broker.setSchedulerSupport(true);

   RedeliveryPlugin redeliveryPlugin = new RedeliveryPlugin();

   RedeliveryPolicy brokerRedeliveryPolicy = new RedeliveryPolicy();
   brokerRedeliveryPolicy.setRedeliveryDelay(redeliveryDelayMillis);
   brokerRedeliveryPolicy.setInitialRedeliveryDelay(initialRedeliveryDelayMillis);
   brokerRedeliveryPolicy.setMaximumRedeliveries(maxBrokerRedeliveries);

   RedeliveryPolicyMap redeliveryPolicyMap = new RedeliveryPolicyMap();
   redeliveryPolicyMap.setDefaultEntry(brokerRedeliveryPolicy);
   redeliveryPlugin.setRedeliveryPolicyMap(redeliveryPolicyMap);

   broker.setPlugins(new BrokerPlugin[]{redeliveryPlugin});

   if (deleteMessages) {
      broker.setDeleteAllMessagesOnStartup(true);
   }
   broker.start();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:23,代码来源:BrokerRedeliveryTest.java

示例3: startBroker

import org.apache.activemq.RedeliveryPolicy; //导入方法依赖的package包/类
@Before
public void startBroker() throws Exception {
   broker = new BrokerService();
   broker.setDeleteAllMessagesOnStartup(true);
   broker.setPersistent(false);
   broker.setUseJmx(false);
   broker.addConnector("tcp://0.0.0.0:0");
   broker.start();
   broker.waitUntilStarted();

   connectionUri = broker.getTransportConnectors().get(0).getPublishableConnectString();
   connectionFactory = new ActiveMQConnectionFactory(connectionUri);
   connectionFactory.setNonBlockingRedelivery(true);

   RedeliveryPolicy policy = connectionFactory.getRedeliveryPolicy();
   policy.setInitialRedeliveryDelay(TimeUnit.SECONDS.toMillis(2));
   policy.setBackOffMultiplier(-1);
   policy.setRedeliveryDelay(TimeUnit.SECONDS.toMillis(2));
   policy.setMaximumRedeliveryDelay(-1);
   policy.setUseExponentialBackOff(false);
   policy.setMaximumRedeliveries(-1);
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:23,代码来源:NonBlockingConsumerRedeliveryTest.java

示例4: testZeroMaximumNumberOfRedeliveries

import org.apache.activemq.RedeliveryPolicy; //导入方法依赖的package包/类
/**
 * @throws Exception
 */
@Test
public void testZeroMaximumNumberOfRedeliveries() throws Exception {

   // Receive a message with the JMS API
   RedeliveryPolicy policy = connection.getRedeliveryPolicy();
   policy.setInitialRedeliveryDelay(100);
   policy.setUseExponentialBackOff(false);
   // let's set the maximum redeliveries to 0
   policy.setMaximumRedeliveries(0);

   connection.start();
   Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
   ActiveMQQueue destination = new ActiveMQQueue("TEST");
   this.makeSureCoreQueueExist("TEST");
   MessageProducer producer = session.createProducer(destination);

   MessageConsumer consumer = session.createConsumer(destination);

   // Send the messages
   producer.send(session.createTextMessage("1st"));
   producer.send(session.createTextMessage("2nd"));
   session.commit();

   TextMessage m;
   m = (TextMessage) consumer.receive(1000);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   // the 1st message should not be redelivered since maximumRedeliveries is
   // set to 0
   m = (TextMessage) consumer.receive(1000);
   assertNotNull(m);
   assertEquals("2nd", m.getText());
   session.commit();

}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:41,代码来源:RedeliveryPolicyTest.java

示例5: testInitialRedeliveryDelayZero

import org.apache.activemq.RedeliveryPolicy; //导入方法依赖的package包/类
@Test
public void testInitialRedeliveryDelayZero() throws Exception {
   // Receive a message with the JMS API
   RedeliveryPolicy policy = connection.getRedeliveryPolicy();
   policy.setInitialRedeliveryDelay(0);
   policy.setUseExponentialBackOff(false);
   policy.setMaximumRedeliveries(1);

   connection.start();
   Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
   ActiveMQQueue destination = new ActiveMQQueue("TEST");
   this.makeSureCoreQueueExist("TEST");
   MessageProducer producer = session.createProducer(destination);

   MessageConsumer consumer = session.createConsumer(destination);

   // Send the messages
   producer.send(session.createTextMessage("1st"));
   producer.send(session.createTextMessage("2nd"));
   session.commit();

   TextMessage m;
   m = (TextMessage) consumer.receive(100);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   m = (TextMessage) consumer.receive(100);
   assertNotNull(m);
   assertEquals("1st", m.getText());

   m = (TextMessage) consumer.receive(100);
   assertNotNull(m);
   assertEquals("2nd", m.getText());
   session.commit();

   session.commit();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:39,代码来源:RedeliveryPolicyTest.java

示例6: testInitialRedeliveryDelayOne

import org.apache.activemq.RedeliveryPolicy; //导入方法依赖的package包/类
@Test
public void testInitialRedeliveryDelayOne() throws Exception {
   // Receive a message with the JMS API
   RedeliveryPolicy policy = connection.getRedeliveryPolicy();
   policy.setInitialRedeliveryDelay(1000);
   policy.setUseExponentialBackOff(false);
   policy.setMaximumRedeliveries(1);

   connection.start();
   Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
   ActiveMQQueue destination = new ActiveMQQueue("TEST");
   this.makeSureCoreQueueExist("TEST");
   MessageProducer producer = session.createProducer(destination);

   MessageConsumer consumer = session.createConsumer(destination);

   // Send the messages
   producer.send(session.createTextMessage("1st"));
   producer.send(session.createTextMessage("2nd"));
   session.commit();

   TextMessage m;
   m = (TextMessage) consumer.receive(100);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   m = (TextMessage) consumer.receive(100);
   assertNull(m);

   m = (TextMessage) consumer.receive(2000);
   assertNotNull(m);
   assertEquals("1st", m.getText());

   m = (TextMessage) consumer.receive(100);
   assertNotNull(m);
   assertEquals("2nd", m.getText());
   session.commit();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:40,代码来源:RedeliveryPolicyTest.java

示例7: getRedeliveryPolicy

import org.apache.activemq.RedeliveryPolicy; //导入方法依赖的package包/类
protected RedeliveryPolicy getRedeliveryPolicy() {
   RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
   redeliveryPolicy.setInitialRedeliveryDelay(0);
   redeliveryPolicy.setRedeliveryDelay(1000);
   redeliveryPolicy.setMaximumRedeliveries(3);
   redeliveryPolicy.setBackOffMultiplier((short) 2);
   redeliveryPolicy.setUseExponentialBackOff(true);
   return redeliveryPolicy;
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:10,代码来源:MessageListenerRedeliveryTest.java

示例8: createConnectionFactory

import org.apache.activemq.RedeliveryPolicy; //导入方法依赖的package包/类
@Override
protected ActiveMQConnectionFactory createConnectionFactory() throws Exception {
   ActiveMQConnectionFactory answer = super.createConnectionFactory();
   RedeliveryPolicy policy = new RedeliveryPolicy();
   policy.setMaximumRedeliveries(3);
   policy.setBackOffMultiplier((short) 1);
   policy.setRedeliveryDelay(0);
   policy.setInitialRedeliveryDelay(0);
   policy.setUseExponentialBackOff(false);
   answer.setRedeliveryPolicy(policy);
   return answer;
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:13,代码来源:MessageListenerDeadLetterTest.java

示例9: createConnectionFactory

import org.apache.activemq.RedeliveryPolicy; //导入方法依赖的package包/类
@Override
protected ActiveMQConnectionFactory createConnectionFactory() throws Exception {
   ActiveMQConnectionFactory answer = super.createConnectionFactory();
   RedeliveryPolicy policy = new RedeliveryPolicy();
   policy.setMaximumRedeliveries(3);
   policy.setBackOffMultiplier((short) 1);
   policy.setInitialRedeliveryDelay(10);
   policy.setUseExponentialBackOff(false);
   answer.setRedeliveryPolicy(policy);
   return answer;
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:12,代码来源:DeadLetterTest.java

示例10: createConnectionFactory

import org.apache.activemq.RedeliveryPolicy; //导入方法依赖的package包/类
@Override
protected ConnectionFactory createConnectionFactory() throws Exception {
   ActiveMQConnectionFactory answer = (ActiveMQConnectionFactory) super.createConnectionFactory();
   RedeliveryPolicy policy = new RedeliveryPolicy();
   policy.setMaximumRedeliveries(3);
   policy.setRedeliveryDelay(0);
   policy.setInitialRedeliveryDelay(0);
   policy.setUseExponentialBackOff(false);
   answer.setRedeliveryPolicy(policy);
   return answer;
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:12,代码来源:RollbacksWhileConsumingLargeQueueTest.java

示例11: before

import org.apache.activemq.RedeliveryPolicy; //导入方法依赖的package包/类
@Override
public void before() throws Throwable {
    log.info("+++ BEFORE on JUnit Rule '" + id(Rule_Mats.class) + "', JMS and MATS:");
    String sysprop_matsTestActiveMq = System.getProperty(SYSPROP_MATS_TEST_ACTIVEMQ);

    // ::: Server (BrokerService)
    // ====================================

    // :? Do we have specific brokerUrl to connect to?
    if (sysprop_matsTestActiveMq == null) {
        // -> No - the system property was not set, hence start the in-vm broker.
        log.info("Setting up in-vm ActiveMQ BrokerService '" + BROKER_NAME + "' (i.e. the MQ server).");
        _amqServer = new BrokerService();
        _amqServer.setBrokerName(BROKER_NAME);
        _amqServer.setUseJmx(false); // No need for JMX registry.
        _amqServer.setPersistent(false); // No need for persistence (prevents KahaDB dirs from being created).
        _amqServer.setAdvisorySupport(false); // No need Advisory Messages.
        _amqServer.setUseShutdownHook(false);

        // :: Set Individual DLQ
        // Hear, hear: http://activemq.2283324.n4.nabble.com/PolicyMap-api-is-really-bad-td4284307.html
        PolicyMap destinationPolicy = new PolicyMap();
        _amqServer.setDestinationPolicy(destinationPolicy);
        PolicyEntry policyEntry = new PolicyEntry();
        policyEntry.setQueue(">");
        destinationPolicy.put(policyEntry.getDestination(), policyEntry);

        IndividualDeadLetterStrategy individualDeadLetterStrategy = new IndividualDeadLetterStrategy();
        individualDeadLetterStrategy.setQueuePrefix("DLQ.");
        policyEntry.setDeadLetterStrategy(individualDeadLetterStrategy);

        _amqServer.start();
    }
    else {
        // -> Yes, there is specified a brokerUrl to connect to, so we
        log.info("SKIPPING setup of in-vm ActiveMQ BrokerService (MQ server), since System Property '"
                + SYSPROP_MATS_TEST_ACTIVEMQ + "' was set (to [" + sysprop_matsTestActiveMq + "]).");
    }

    // ::: Client (ConnectionFactory)
    // ====================================

    // :: Find which broker URL to use
    String brokerUrl;
    if (sysprop_matsTestActiveMq == null) {
        brokerUrl = "vm://" + BROKER_NAME + "?create=false";
    }
    else if (SYSPROP_VALUE_LOCALHOST.equals(sysprop_matsTestActiveMq)) {
        brokerUrl = "tcp://localhost:61616";
    }
    else {
        brokerUrl = sysprop_matsTestActiveMq;
    }
    // :: Connect to the broker
    log.info("Setting up ActiveMQ ConnectionFactory (MQ client), brokerUrl: [" + brokerUrl + "].");
    _amqClient = new ActiveMQConnectionFactory(brokerUrl);
    RedeliveryPolicy redeliveryPolicy = _amqClient.getRedeliveryPolicy();
    // :: Only try redelivery once, since the unit tests does not need any more to prove that they work.
    redeliveryPolicy.setInitialRedeliveryDelay(500);
    redeliveryPolicy.setUseExponentialBackOff(false);
    redeliveryPolicy.setMaximumRedeliveries(1);

    // ::: MatsFactory
    // ====================================

    log.info("Setting up JmsMatsFactory.");
    _matsStringSerializer = new MatsDefaultJsonSerializer();
    // Allow for override in specialization classes, in particular the one with DB.
    _matsFactory = createMatsFactory(_matsStringSerializer, _amqClient);
    // For all test scenarios, it makes no sense to have a concurrency more than 1, unless explicitly testing that.
    _matsFactory.getFactoryConfig().setConcurrency(1);
    log.info("--- BEFORE done! JUnit Rule '" + id(Rule_Mats.class) + "', JMS and MATS.");
}
 
开发者ID:stolsvik,项目名称:mats,代码行数:74,代码来源:Rule_Mats.java

示例12: testExponentialRedeliveryPolicyDelaysDeliveryOnRollback

import org.apache.activemq.RedeliveryPolicy; //导入方法依赖的package包/类
/**
 * @throws Exception
 */
@Test
public void testExponentialRedeliveryPolicyDelaysDeliveryOnRollback() throws Exception {

   // Receive a message with the JMS API
   RedeliveryPolicy policy = connection.getRedeliveryPolicy();
   policy.setInitialRedeliveryDelay(0);
   policy.setRedeliveryDelay(500);
   policy.setBackOffMultiplier((short) 2);
   policy.setUseExponentialBackOff(true);

   connection.start();
   Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
   ActiveMQQueue destination = new ActiveMQQueue("testExponentialRedeliveryPolicyDelaysDeliveryOnRollback");
   this.makeSureCoreQueueExist("testExponentialRedeliveryPolicyDelaysDeliveryOnRollback");
   MessageProducer producer = session.createProducer(destination);

   MessageConsumer consumer = session.createConsumer(destination);

   // Send the messages
   producer.send(session.createTextMessage("1st"));
   producer.send(session.createTextMessage("2nd"));
   session.commit();

   TextMessage m;
   m = (TextMessage) consumer.receive(1000);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   // No delay on first rollback..
   m = (TextMessage) consumer.receive(100);
   assertNotNull(m);
   session.rollback();

   // Show subsequent re-delivery delay is incrementing.
   m = (TextMessage) consumer.receive(100);
   assertNull(m);

   m = (TextMessage) consumer.receive(700);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   // Show re-delivery delay is incrementing exponentially
   m = (TextMessage) consumer.receive(100);
   assertNull(m);
   m = (TextMessage) consumer.receive(500);
   assertNull(m);
   m = (TextMessage) consumer.receive(700);
   assertNotNull(m);
   assertEquals("1st", m.getText());

}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:57,代码来源:RedeliveryPolicyTest.java

示例13: testNornalRedeliveryPolicyDelaysDeliveryOnRollback

import org.apache.activemq.RedeliveryPolicy; //导入方法依赖的package包/类
/**
 * @throws Exception
 */
@Test
public void testNornalRedeliveryPolicyDelaysDeliveryOnRollback() throws Exception {

   // Receive a message with the JMS API
   RedeliveryPolicy policy = connection.getRedeliveryPolicy();
   policy.setInitialRedeliveryDelay(0);
   policy.setRedeliveryDelay(500);

   connection.start();
   Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
   ActiveMQQueue destination = new ActiveMQQueue("testNornalRedeliveryPolicyDelaysDeliveryOnRollback");
   this.makeSureCoreQueueExist("testNornalRedeliveryPolicyDelaysDeliveryOnRollback");
   MessageProducer producer = session.createProducer(destination);

   MessageConsumer consumer = session.createConsumer(destination);

   // Send the messages
   producer.send(session.createTextMessage("1st"));
   producer.send(session.createTextMessage("2nd"));
   session.commit();

   TextMessage m;
   m = (TextMessage) consumer.receive(1000);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   // No delay on first rollback..
   m = (TextMessage) consumer.receive(100);
   assertNotNull(m);
   session.rollback();

   // Show subsequent re-delivery delay is incrementing.
   m = (TextMessage) consumer.receive(100);
   assertNull(m);
   m = (TextMessage) consumer.receive(700);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   // The message gets redelivered after 500 ms every time since
   // we are not using exponential backoff.
   m = (TextMessage) consumer.receive(100);
   assertNull(m);
   m = (TextMessage) consumer.receive(700);
   assertNotNull(m);
   assertEquals("1st", m.getText());

}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:53,代码来源:RedeliveryPolicyTest.java

示例14: testDLQHandling

import org.apache.activemq.RedeliveryPolicy; //导入方法依赖的package包/类
/**
 * @throws Exception
 */
@Test
public void testDLQHandling() throws Exception {
   this.makeSureCoreQueueExist("ActiveMQ.DLQ");
   // Receive a message with the JMS API
   RedeliveryPolicy policy = connection.getRedeliveryPolicy();
   policy.setInitialRedeliveryDelay(100);
   policy.setUseExponentialBackOff(false);
   policy.setMaximumRedeliveries(2);

   connection.start();
   Session session = connection.createSession(true, Session.CLIENT_ACKNOWLEDGE);
   ActiveMQQueue destination = new ActiveMQQueue("TEST");
   this.makeSureCoreQueueExist("TEST");
   MessageProducer producer = session.createProducer(destination);

   MessageConsumer consumer = session.createConsumer(destination);
   MessageConsumer dlqConsumer = session.createConsumer(new ActiveMQQueue("ActiveMQ.DLQ"));

   // Send the messages
   producer.send(session.createTextMessage("1st"));
   producer.send(session.createTextMessage("2nd"));
   session.commit();

   TextMessage m;
   m = (TextMessage) consumer.receive(1000);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   m = (TextMessage) consumer.receive(1000);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   m = (TextMessage) consumer.receive(2000);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   // The last rollback should cause the 1st message to get sent to the DLQ
   m = (TextMessage) consumer.receive(1000);
   assertNotNull(m);
   assertEquals("2nd", m.getText());
   session.commit();

   // We should be able to get the message off the DLQ now.
   m = (TextMessage) dlqConsumer.receive(1000);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   String cause = m.getStringProperty(ActiveMQMessage.DLQ_DELIVERY_FAILURE_CAUSE_PROPERTY);
   assertTrue("cause exception has policy ref", cause.contains("RedeliveryPolicy"));
   session.commit();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:57,代码来源:RedeliveryPolicyTest.java

示例15: testInfiniteMaximumNumberOfRedeliveries

import org.apache.activemq.RedeliveryPolicy; //导入方法依赖的package包/类
/**
 * @throws Exception
 */
@Test
public void testInfiniteMaximumNumberOfRedeliveries() throws Exception {

   // Receive a message with the JMS API
   RedeliveryPolicy policy = connection.getRedeliveryPolicy();
   policy.setInitialRedeliveryDelay(100);
   policy.setUseExponentialBackOff(false);
   // let's set the maximum redeliveries to no maximum (ie. infinite)
   policy.setMaximumRedeliveries(-1);

   connection.start();
   Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
   ActiveMQQueue destination = new ActiveMQQueue("TEST");
   this.makeSureCoreQueueExist("TEST");
   MessageProducer producer = session.createProducer(destination);

   MessageConsumer consumer = session.createConsumer(destination);

   // Send the messages
   producer.send(session.createTextMessage("1st"));
   producer.send(session.createTextMessage("2nd"));
   session.commit();

   TextMessage m;

   m = (TextMessage) consumer.receive(1000);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   // we should be able to get the 1st message redelivered until a
   // session.commit is called
   m = (TextMessage) consumer.receive(1000);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   m = (TextMessage) consumer.receive(2000);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   m = (TextMessage) consumer.receive(2000);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   m = (TextMessage) consumer.receive(2000);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.rollback();

   m = (TextMessage) consumer.receive(2000);
   assertNotNull(m);
   assertEquals("1st", m.getText());
   session.commit();

   m = (TextMessage) consumer.receive(2000);
   assertNotNull(m);
   assertEquals("2nd", m.getText());
   session.commit();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:66,代码来源:RedeliveryPolicyTest.java


注:本文中的org.apache.activemq.RedeliveryPolicy.setInitialRedeliveryDelay方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。