Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ActiveMQ消息去排队但未被消耗

ActiveMQ消息去排队但未被消耗
EN

Stack Overflow用户
提问于 2016-02-09 19:51:13
回答 1查看 2.2K关注 0票数 2

我有一个JBoss web应用程序,该应用程序目前正在使用嵌入式HornetQ进行JMS。我们想切换到一个ActiveMQ HA集群,但是我遇到了一些奇怪的问题。我的一个队列(periodicDerivationQueue)没有像对HornetQ那样运行。AMQ控制台显示消息是排队的和退出队列的,但是它们并没有对我的使用者产生影响。起初,我认为消息是出于某种原因而排到DLQ中的,但情况似乎并非如此。据我所知,AMQ不会创建DLQ,除非它是必要的。当我看经纪人的时候,没有DLQ。我怎样才能知道我的信息要去哪里?

由于反射,我在堆栈的应用程序端调试也有困难。我想在AMQ方面设置一个断点,看看我的消息发生了什么,但我不知道该放在哪里。这里有什么想法吗?

这可能是序列化问题吗?我听说有时JMS代理之间序列化的差异会导致奇怪的行为。

我真的被困在这里了,任何帮助都将不胜感激。请参阅下面的配置信息。

野蝇8.2

AMQ 5.13

消费者(消息不在此制作)

代码语言:javascript
运行
AI代码解释
复制
public class PeriodicDerivationExecutionHandlerImpl implements PeriodicDerivationExecutionHandler {

protected DerivationService derivationService;
protected DerivationModelService derivationModelService;

protected Logger logger = LoggerFactory.getLogger(this.getClass());

@Override
public void executeDerivation(PeriodicDerivation params) throws Exception{

    JbpmHibernateUtil.openSession();
    Derivation derivation = null;
    try{            

        if (params.isGroup()){
            derivation = new GroupDerivation();

            GroupQueryParameters qp = new GroupQueryParameters();
            qp.setGroupName(params.getItemName());
            derivation.setDerivedItem(derivationModelService.getGroup(qp));

        }else{
            derivation = new DeterminantDerivation();

            DeterminantQueryParameters qp = new DeterminantQueryParameters();
            qp.setDeterminantName(params.getItemName());            
            derivation.setDerivedItem(derivationModelService.getDeterminant(qp));

        }

        logger.info("Executing periodic derivation [" + derivation + "]");

        derivation.setModelEffectiveDate(new DateTime());
        derivation.setPeriod(params.getPeriod());
        derivation.getProcessParameters().add(new DerivationProcessParameter(PeriodicDerivation.PERIODIC_PROCESS_VAR, true));
        derivation.setExecutionMode(DerivationExecutionMode.SYNCHRONOUS_LOCAL);
        derivationService.executeDerivation(derivation);

        JbpmHibernateUtil.closeSession(true);
    }catch(Exception e){
        logger.error("Periodic derivation execution failed for [" + derivation + "]",e);
        JbpmHibernateUtil.closeSession(false);
        throw new Exception("Periodic derivation execution failed for [" + derivation + "]",e);
    }
}

public DerivationService getDerivationService() {
    return derivationService;
}

public void setDerivationService(DerivationService derivationService) {
    this.derivationService = derivationService;
}

public DerivationModelService getDerivationModelService() {
    return derivationModelService;
}

public void setDerivationModelService(DerivationModelService derivationModelService) {
    this.derivationModelService = derivationModelService;
}

}

消费者XML配置

代码语言:javascript
运行
AI代码解释
复制
<int:gateway id="periodicDerivationExecutionGateway"
        service-interface="com.etse.jbpm.scheduler.PeriodicDerivationExecutionHandler">
        <int:method name="executeDerivation" request-channel="periodicDerivationChannel" />
    </int:gateway>

    <bean id="periodicDerivationExecutor"
        class="com.etse.jbpm.scheduler.PeriodicDerivationExecutionHandlerImpl">
        <property name="derivationService" ref="derivationService" />
        <property name="derivationModelService" ref="derivationModelService" />
    </bean>

    <int:service-activator input-channel="periodicDerivationChannel"
        ref="periodicDerivationExecutor" method="executeDerivation" />

    <int-jms:channel id="periodicDerivationChannel"
        queue-name="${jms.destination.name.periodicderivation}" concurrency="${integration.listener.threads.maximum}"
        task-executor="periodicDerivationTaskExecutor" />

ActiveMQ Standalone.xml (Jboss)

代码语言:javascript
运行
AI代码解释
复制
<subsystem xmlns="urn:jboss:domain:resource-adapters:2.0">
        <resource-adapters>
            <resource-adapter id="activemq-rar.rar">
                <archive>
                    activemq-rar.rar
                </archive>
                <transaction-support>XATransaction</transaction-support>
                <config-property name="ServerUrl">
                    tcp://127.0.0.1:61616?jms.rmIdFromConnectionId=true
                </config-property>
                <config-property name="UserName">
                    admin
                </config-property>
                <config-property name="Password">
                    admin
                </config-property>
                <connection-definitions>

                    <connection-definition 
                       class-name="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" 
                       jndi-name="java:/ConnectionFactory"  
           enabled="true" 
           pool-name="ConnectionFactory"> 
                        <xa-pool>
                            <min-pool-size>1</min-pool-size>
                            <max-pool-size>20</max-pool-size>
                            <prefill>false</prefill>
                            <is-same-rm-override>false</is-same-rm-override>
                        </xa-pool>
                        <recovery>
                            <recover-credential>
                                <user-name>admin</user-name>
                                <password>admin</password>
                            </recover-credential>
                            <recover-plugin class-name="org.jboss.jca.core.recovery.ConfigurableRecoveryPlugin">
                                <config-property name="EnableIsValid">
                                    false
                                </config-property>
                                <config-property name="IsValidOverride">
                                    true
                                </config-property>
                                <config-property name="EnableClose">
                                    true
                                </config-property>
                            </recover-plugin>
                        </recovery>
                    </connection-definition>

                </connection-definitions>

Queues/Topics

代码语言:javascript
运行
AI代码解释
复制
<admin-objects>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" 
                                jndi-name="java:jboss/exported/jms/queue/bpm/deferredBpmCommandQueue" 
                                use-java-context="true" 
                                pool-name="deferredBpmCommandQueue">
                        <config-property name="PhysicalName">
                            deferredBpmCommandQueue
                        </config-property>
                    </admin-object>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" 
                                jndi-name="java:jboss/exported/jms/queue/bpm/asyncActionRequestQueue" 
                                use-java-context="true" 
                                pool-name="ActiveMQQueue.asyncActionRequestQueue">
                        <config-property name="PhysicalName">
                            asyncActionRequestQueue
                        </config-property>
                    </admin-object>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" 
                                jndi-name="java:jboss/exported/jms/queue/bpm/DLQ" 
                                use-java-context="true" 
                                pool-name="DLQ">
                        <config-property name="PhysicalName">
                            DLQ
                        </config-property>
                    </admin-object>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:jboss/exported/jms/queue/bpm/cacheUpdateReplicationQueue" use-java-context="true" pool-name="ActiveMQQueue.cacheUpdateReplicationQueue">
                        <config-property name="PhysicalName">
                            cacheUpdateReplicationQueue
                        </config-property>
                    </admin-object>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:jboss/exported/jms/queue/bpm/periodicDerivationQueue" use-java-context="true" pool-name="ActiveMQQueue.periodicDerivationQueue">
                        <config-property name="PhysicalName">
                            periodicDerivationQueue
                        </config-property>
                    </admin-object>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:jboss/exported/jms/queue/bpm/asyncServiceSignalQueue" use-java-context="true" pool-name="ActiveMQQueue.asyncServiceSignalQueue">
                        <config-property name="PhysicalName">
                            asyncServiceSignalQueue
                        </config-property>
                    </admin-object>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQTopic" jndi-name="java:jboss/exported/jms/queue/bpm/processEventTopic" use-java-context="true" pool-name="ActiveMQTopic.processEventTopic">
                        <config-property name="PhysicalName">
                            processEventTopic
                        </config-property>
                    </admin-object>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:jboss/exported/jms/queue/bpm/asyncActionReplyQueue" use-java-context="true" pool-name="ActiveMQQueue.asyncActionReplyQueue">
                        <config-property name="PhysicalName">
                            asyncActionReplyQueue
                        </config-property>
                    </admin-object>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:jboss/exported/jms/queue/bpm/ExpiryQueue" use-java-context="true" pool-name="ActiveMQQueue.ExpiryQueue">
                        <config-property name="PhysicalName">
                            ExpiryQueue
                        </config-property>
                    </admin-object>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQTopic" jndi-name="java:jboss/exported/jms/queue/bpm/asyncActionServiceStatusRequestTopic" use-java-context="true" pool-name="ActiveMQTopic.asyncActionServiceStatusRequestTopic">
                        <config-property name="PhysicalName">
                            asyncActionServiceStatusRequestTopic
                        </config-property>
                    </admin-object>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQTopic" jndi-name="java:jboss/exported/jms/queue/bpm/asyncActionAffinityRequestTopic" use-java-context="true" pool-name="ActiveMQTopic.asyncActionAffinityRequestTopic">
                        <config-property name="PhysicalName">
                            asyncActionAffinityRequestTopic
                        </config-property>
                    </admin-object>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:jboss/exported/jms/queue/bpm/jbpmJobQueue" use-java-context="true" pool-name="ActiveMQQueue.jbpmJobQueue">
                        <config-property name="PhysicalName">
                            jbpmJobQueue
                        </config-property>
                    </admin-object>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQTopic" jndi-name="java:jboss/exported/jms/queue/bpm/asyncActionAffinityReplyTopic" use-java-context="true" pool-name="ActiveMQTopic.asyncActionAffinityReplyTopic">
                        <config-property name="PhysicalName">
                            asyncActionAffinityReplyTopic
                        </config-property>
                    </admin-object>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQTopic" jndi-name="java:jboss/exported/jms/queue/bpm/cacheUpdateReplicationEventTopic" use-java-context="true" pool-name="ActiveMQTopic.cacheUpdateReplicationEventTopic">
                        <config-property name="PhysicalName">
                            cacheUpdateReplicationEventTopic
                        </config-property>
                    </admin-object>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQTopic" jndi-name="java:jboss/exported/jms/queue/bpm/asyncActionServiceStatusTopic" use-java-context="true" pool-name="ActiveMQTopic.asyncActionServiceStatusTopic">
                        <config-property name="PhysicalName">
                            asyncActionServiceStatusTopic
                        </config-property>
                    </admin-object>
                    <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:jboss/exported/jms/queue/bpm/asyncActionServiceLogRecordQueue" use-java-context="true" pool-name="ActiveMQQueue.asyncActionServiceLogRecordQueue">
                        <config-property name="PhysicalName">
                            asyncActionServiceLogRecordQueue
                        </config-property>
                    </admin-object>
                </admin-objects>

Broker配置

代码语言:javascript
运行
AI代码解释
复制
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <value>file:${activemq.conf}/credentials.properties</value>
    </property>
</bean>


<bean id="logQuery" class="io.fabric8.insight.log.log4j.Log4jLogQuery"
      lazy-init="false" scope="singleton"
      init-method="start" destroy-method="stop">
</bean>

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="broker1" dataDirectory="${activemq.data}" persistent="true"> 

    <destinationPolicy>
        <policyMap>
          <policyEntries>
            <policyEntry topic=">" >

              <pendingMessageLimitStrategy>
                <constantPendingMessageLimitStrategy limit="1000"/>
              </pendingMessageLimitStrategy>
            </policyEntry>
          </policyEntries>
        </policyMap>
    </destinationPolicy>


    <managementContext>
        <managementContext createConnector="false"/>
    </managementContext>


    <persistenceAdapter>
      <kahaDB directory="${activemq.data}/kahadb"/> 
    </persistenceAdapter>

      <systemUsage>
        <systemUsage>
            <memoryUsage>
                <memoryUsage percentOfJvmHeap="70" />
            </memoryUsage>
            <storeUsage>
                <storeUsage limit="100 gb"/>
            </storeUsage>
            <tempUsage>
                <tempUsage limit="50 gb"/>
            </tempUsage>
        </systemUsage>
    </systemUsage>


    <transportConnectors>
        <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    </transportConnectors>

    <shutdownHooks>
        <bean xmlns="http://www.springframework.org/schema/beans" class="org.apache.activemq.hooks.SpringContextHook" />
    </shutdownHooks>

</broker>
<import resource="jetty.xml"/>

HornetQ Standalone.xml (Jboss)

代码语言:javascript
运行
AI代码解释
复制
<subsystem xmlns="urn:jboss:domain:messaging:2.0">
        <hornetq-server>
            <persistence-enabled>false</persistence-enabled>
            <jmx-management-enabled>true</jmx-management-enabled>
            <shared-store>true</shared-store>
            <journal-type>ASYNCIO</journal-type>
            <journal-file-size>102400</journal-file-size>
            <journal-min-files>2</journal-min-files>

            <connectors>
                <netty-connector name="netty" socket-binding="messaging"/>
                <netty-connector name="netty-throughput" socket-binding="messaging-throughput">
                    <param key="batch-delay" value="50"/>
                </netty-connector>
                <in-vm-connector name="in-vm" server-id="0"/>
            </connectors>

            <acceptors>
                <netty-acceptor name="netty" socket-binding="messaging"/>
                <netty-acceptor name="netty-throughput" socket-binding="messaging-throughput">
                    <param key="batch-delay" value="50"/>
                    <param key="direct-deliver" value="false"/>
                </netty-acceptor>
                <in-vm-acceptor name="in-vm" server-id="0"/>
            </acceptors>

            <security-settings>
                <security-setting match="#">
                    <permission type="send" roles="guest"/>
                    <permission type="consume" roles="guest"/>
                    <permission type="createNonDurableQueue" roles="guest"/>
                    <permission type="deleteNonDurableQueue" roles="guest"/>
                </security-setting>
            </security-settings>

            <address-settings>
                <address-setting match="#">
                    <dead-letter-address>jms.queue.DLQ</dead-letter-address>
                    <expiry-address>jms.queue.ExpiryQueue</expiry-address>
                    <redelivery-delay>0</redelivery-delay>
                    <max-size-bytes>104857600</max-size-bytes>
                    <page-size-bytes>10485760</page-size-bytes>
                    <page-max-cache-size>10</page-max-cache-size>
                    <address-full-policy>PAGE</address-full-policy>
                    <message-counter-history-day-limit>10</message-counter-history-day-limit>
                </address-setting>
            </address-settings>

            <jms-connection-factories>
                <connection-factory name="InVmConnectionFactory">
                    <connectors>
                        <connector-ref connector-name="in-vm"/>
                    </connectors>
                    <entries>
                        <entry name="java:/ConnectionFactory"/>
                    </entries>
                </connection-factory>
                <connection-factory name="RemoteConnectionFactory">
                    <connectors>
                        <connector-ref connector-name="netty"/>
                    </connectors>
                    <entries>
                        <entry name="java:jboss/exported/jms/RemoteConnectionFactory"/>
                    </entries>
                    <client-failure-check-period>30000</client-failure-check-period>
                    <connection-ttl>300000</connection-ttl>
                    <retry-interval>2000</retry-interval>
                    <retry-interval-multiplier>1</retry-interval-multiplier>
                    <max-retry-interval>2000</max-retry-interval>
                    <reconnect-attempts>100</reconnect-attempts>
                </connection-factory>
            </jms-connection-factories>

Queues/Topics

代码语言:javascript
运行
AI代码解释
复制
<jms-destinations>
                <jms-queue name="asyncActionRequestQueue">
                    <entry name="queue/bpm/asyncActionRequestQueue"/>
                    <entry name="java:jboss/exported/jms/queue/bpm/asyncActionRequestQueue"/>
                </jms-queue>
                <jms-queue name="asyncActionReplyQueue">
                    <entry name="queue/bpm/asyncActionReplyQueue"/>
                    <entry name="java:jboss/exported/jms/queue/bpm/asyncActionReplyQueue"/>
                </jms-queue>
                <jms-queue name="asyncServiceSignalQueue">
                    <entry name="queue/bpm/asyncServiceSignalQueue"/>
                    <entry name="java:jboss/exported/jms/queue/bpm/asyncServiceSignalQueue"/>
                </jms-queue>
                <jms-queue name="asyncActionServiceLogRecordQueue">
                    <entry name="queue/bpm/asyncActionServiceLogRecordQueue"/>
                    <entry name="java:jboss/exported/jms/queue/bpm/asyncActionServiceLogRecordQueue"/>
                </jms-queue>
                <jms-queue name="deferredBpmCommandQueue">
                    <entry name="queue/bpm/deferredBpmCommandQueue"/>
                    <entry name="java:jboss/exported/jms/queue/bpm/deferredBpmCommandQueue"/>
                </jms-queue>
                <jms-queue name="jbpmJobQueue">
                    <entry name="queue/bpm/jbpmJobQueue"/>
                    <entry name="java:jboss/exported/jms/queue/bpm/jbpmJobQueue"/>
                </jms-queue>
                <jms-queue name="DLQ">
                    <entry name="queue/DLQ"/>
                    <entry name="java:jboss/exported/jms/queue/DLQ"/>
                </jms-queue>
                <jms-queue name="ExpiryQueue">
                    <entry name="queue/ExpiryQueue"/>
                    <entry name="java:jboss/exported/jms/queue/ExpiryQueue"/>
                </jms-queue>
                <jms-queue name="periodicDerivationQueue">
                    <entry name="queue/bpm/periodicDerivationQueue"/>
                    <entry name="java:jboss/exported/jms/queue/bpm/periodicDerivationQueue"/>
                </jms-queue>
                <jms-queue name="cacheUpdateReplicationQueue">
                    <entry name="queue/bpm/cacheUpdateReplicationQueue"/>
                    <entry name="java:jboss/exported/jms/queue/bpm/cacheUpdateReplicationQueue"/>
                </jms-queue>
                <jms-topic name="asyncActionServiceStatusTopic">
                    <entry name="topic/bpm/asyncActionServiceStatusTopic"/>
                    <entry name="java:jboss/exported/jms/topic/bpm/asyncActionServiceStatusTopic"/>
                </jms-topic>
                <jms-topic name="asyncActionServiceStatusRequestTopic">
                    <entry name="topic/bpm/asyncActionServiceStatusRequestTopic"/>
                    <entry name="java:jboss/exported/jms/topic/bpm/asyncActionServiceStatusRequestTopic"/>
                </jms-topic>
                <jms-topic name="asyncActionAffinityRequestTopic">
                    <entry name="topic/bpm/asyncActionAffinityRequestTopic"/>
                    <entry name="java:jboss/exported/jms/topic/bpm/asyncActionAffinityRequestTopic"/>
                </jms-topic>
                <jms-topic name="asyncActionAffinityReplyTopic">
                    <entry name="topic/bpm/asyncActionAffinityReplyTopic"/>
                    <entry name="java:jboss/exported/jms/topic/bpm/asyncActionAffinityReplyTopic"/>
                </jms-topic>
                <jms-topic name="processEventTopic">
                    <entry name="topic/bpm/processEventTopic"/>
                    <entry name="java:jboss/exported/jms/topic/bpm/processEventTopic"/>
                </jms-topic>
                <jms-topic name="cacheUpdateReplicationEventTopic">
                    <entry name="topic/bpm/cacheUpdateReplicationEventTopic"/>
                    <entry name="java:jboss/exported/jms/topic/bpm/cacheUpdateReplicationEventTopic"/>
                </jms-topic>
            </jms-destinations>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-12 12:04:55

ObjectMessage序列化安全性是问题所在。

ObjectMessage对象依赖于Java序列化的封送/解封送对象有效负载。此过程通常被认为是不安全的,因为恶意有效载荷可以利用主机系统。这就是为什么从5.12.2和5.13.0版本开始,ActiveMQ强制用户显式地使用ObjectMessages交换白名单包。

几天前我看到了这个,并增加了一个白名单,但它没有解决这个问题。我还试着与AMQ5.11.3竞争,但没有奏效。显然,他们也在5.11.3中增加了安全功能。无论如何,我将这个(-Dorg.apache.activemq.SERIALIZABLE_PACKAGES="*")添加到客户端和AMQ参数中,现在一切都正常工作。

请记住,我使用的命令行选项是我在代理中显式打开的安全漏洞,它允许恶意用户在我的系统上执行代码。使用该标志的正确方法是显式列出允许反序列化的类,或者最多使用包通配符来避免显式列出受信任父包中的单个类和子包。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35306494

复制
相关文章
Onehouse 对Apache Hudi开源社区的承诺
早些时候,我们宣布了我们的新公司 Onehouse,重磅!基于Apache Hudi的商业公司Onehouse成立,它提供了一个建立在 Apache Hudi(简称"Hudi")之上的托管 Lakehouse 基础。在此博客中,我们的创始人兼首席执行官 Vinoth Chandar(也是 Hudi 的创建者和 PMC 主席)希望透明地宣布我们的原则和计划,以有意义且不间断的方式继续为 Hudi 社区做出贡献。
ApacheHudi
2022/04/01
6490
FTC的Zoom Deal表示对安全执法的承诺
美国联邦贸易委员会正在完善一项决议,以加强其对电子商务交易中出现的安全缺陷的执法力度。该机构最近的行动涉及电话会议提供商Zoom Video Communications不当活动的指控,这是一个著名的例子。 在与Zoom达成和解后,FTC对与Zoom的服务相关的安全和隐私问题对公司提出了明确的特定要求。评论期于12月中旬到期后,2020年11月13日的和解协议正式生效。 美国联邦贸易委员会表示,与Zoom达成的协议要求该公司“实施强有力的信息安全计划,以解决有关视频会议提供商进行一系列欺骗性和不公平做法的指控,这些做法破坏了其用户的安全。” Zoom接受或接受委员会的指控后,既没有承认也没有否认委员会的指控。 广泛的电子商务涟漪效应 在电子商务世界中,重要的是,委员会在Zoom案中的行动所反映的不仅仅是内部政策,其目的是加强对电子商务问题的执行。根据Cleary Gottlieb的案例分析,FTC的行动还反映了联邦法院的裁决,该裁决导致委员会采取了更强有力和更有针对性的执法行动,而不是更一般的合规要求。 此外,FTC行动的影响远远超出了应用于视频会议服务的范围,并且影响了广泛的电子商务活动。 Alston and Bird的合伙人凯瑟琳·本威(Kathleen Benway)说:“缩放决定绝对适用。美国联邦贸易委员会(FTC)的决定“向所有以电子方式收集消费者个人信息的公司提供了教训。明智的做法是,此类公司应仔细审查Zoom投诉,并确保其系统和流程不会引起类似问题,”她对E-商业时报。 FTC在Zoom案中的指控的特殊性,为委员会关注并可能影响执法的电子商务交易类型提供了一些见解。 FTC在其投诉中表示,至少从2016年开始,Zoom声称其提供“端到端256位加密”来保护用户的通信,从而误导了客户,“事实上,它提供了较低的安全级别。” FTC解释说,端到端加密是一种确保通信安全的方法,因此,只有发送者和接收者(没有人,甚至平台提供商)也无法读取内容。 FTC表示,Zoom保留了实际上可以允许公司访问其客户会议内容的加密密钥,并以较低的加密级别来保证其电话会议的安全。根据Alston和Bird的案例分析,Zoom在2020年4月承认其服务通常无法进行端到端加密。 根据FTC的投诉,Zoom还错误地声称会议结束后立即加密了这些会议,从而误导了一些希望将记录的会议存储在公司云存储中的用户。取而代之的是,据称某些录音未加密地在Zoom的服务器上存储了长达60天,然后才转移到其安全的云存储中。 此外,Zoom部署了与Apple的Safari浏览器有关的操作机制,FTC将其描述为一种在没有充分通知或征得用户同意的情况下绕过Safari安全和隐私保护措施的方法。委员会认为,这种部署构成不公平的行为或作法。
YH
2020/12/29
6160
【思考】$nextTick 与 setTimeout 的一点对比!
一个前端开发人员(小智)走进了一个Vue酒吧。小智点了他最喜欢的鸡尾酒:Nuxt。酒保正在努力制作中。然后他自己就唠叨了起来。
前端小智@大迁世界
2022/06/15
1.8K0
【思考】$nextTick 与 setTimeout 的一点对比!
setTimeout和setInterval
setTimeout(methodName, interval); //间隔时间单位为毫秒,表示interval毫秒后执行方法methodName
tandaxia
2018/09/27
2K0
setTimeout和setInterval
新建 html 文件 21-setTimeout.html ,编写下方程序,运行看看效果吧
鹤川
2023/03/21
1.1K0
python的settimeout
有时候写python关于网络的程序。比如用urllib2等module发http请求的时候,发现有时候会有死掉的情况,就是程序没任何反应,也不是cpu,内存没资源的问题。具体情况还没搞明白那里出的问题,但是找到一个解决办法。就是设置socket time out,即:如果一个请求超过一定的时间没有完成,就终止,再次发起请求。 这个是从2.3有的功能用法如下: settimeout( value) Set a timeout on blocking socket operations. The value argument can be a nonnegative float expressing seconds, or None. If a float is given, subsequent socket operations will raise an timeout exception if the timeout period value has elapsed before the operation has completed. Setting a timeout of None disables timeouts on socket operations. s.settimeout(0.0) is equivalent to s.setblocking(0); s.settimeout(None) is equivalent to s.setblocking(1). New in version 2.3. 就是settimeout()里面填一个数值。小心别太小,别正常的请求也不能完成。
py3study
2020/01/06
1.8K0
也谈 setTimeout
IMWeb前端团队
2017/12/29
1.6K0
也谈 setTimeout
setTimeout ,延迟一段事件执行代码,当然这是最基本的用法,这里不说基本用法。
IMWeb前端团队
2019/12/04
1.3K0
setTimeout和requestAnimationFrame
JavaScript语言的一大特点就是单线程,也就是说,同一时间只能做一件事,前面的任务没做完,后面的任务只能等着。
木子星兮
2020/07/16
1.8K0
setTimeout 进阶详解
一开始我以为当setTimeout的第二个参数设置为0是直接执行的, 但没想到结果却让我很以为, 打印出的结果是2,3,1
拿我格子衫来
2022/01/24
6090
setTimeout传参[通俗易懂]
这样就可以了… 为什么是这样呢. 因为setTimeout要求的第一个参数是函数…比如setTimeout(a_fun,1000)这样是可以的,a_fun是一个函数. 但是setTimeout(a_fun(),1000);这样就不行了.因为这里a_fun()其实是函数的返回值了…这样讲应该能明白了. 另外,不推荐网上有人用的方法setTimeout(‘test(1)’,1000);这样的形式,因为这个有很多情况下是不实用的. 如果实在要用这种方法,只能这样:setTimeout(“test(‘”+param+”‘)”,100);这种方式。
全栈程序员站长
2022/07/20
1.9K0
Volatile 可见性承诺
Java Volatile 关键字是一种轻量级的数据一致性保障机制,之所以说是轻量级的是因为 volatile 不具备原子性,它对数据一致性的保障体现在对修改过的数据进行读取的场景下(也就是数据的可见性)。比起对读操作使用互斥锁, volatile 是一种很高效的方式。因为 volatile 不会涉及到线程的上下文切换,以及操作系统对线程执行的调度运算。同时 volidate 关键字的另一个功能是解决“指令重排序问题”。
不会飞的小鸟
2020/03/17
7010
使用setTimeout模拟setInterval
相信setInterval这个东西大火都比较熟了,这里不做关于它的介绍,而是关于本文是如何实现这一功能。
kifuan
2022/10/24
1.8K0
setTimeout的那些事
之前关于service worker介绍的文章中,这样描述了浏览器环境下Javascript环境:"每个页面的javascript运行主线程都是一个Boss"、"Boss很厉害,在页面上指点江山,呼风唤雨。但他有个局限:同一时刻只做一件事(单线程)"。
IMWeb前端团队
2019/12/04
1.6K0
setTimeout的那些事
本文介绍了setTimeout函数的基本用法,包括延迟执行、循环执行、指定延迟执行、指定回调函数、取消定时器、定时器ID、封装好的常用工具函数以及实际场景中的应用案例。
IMWeb前端团队
2017/12/28
2.1K0
Promise: 给我一个承诺,我还你一个承诺
处理concurrent programming,除了threading/multi-processing外,各家语言都有自己的绝活:erlang/elixir是actor model,golang/clojure(core.async)是CSP,haskell/clojure是STM,而javascript是event loop/callback。 callback可能是这几种并发模型里面最好懂的一种方式,就像好莱坞经纪人惯常的做法:don’t call me, I’ll call you back。比如
tyrchen
2018/03/28
1.3K0
Promise: 给我一个承诺,我还你一个承诺
Cloudera对开源的承诺
7 月 10 日,合并后的 Cloudera 宣布了新的开源许可模式,并计划对所有产品的新版本实施许可证变更,不追溯已经发布的版本。在合并之前,这两家公司是在不同的开源许可模式下发布各自的产品,新模式将 Hortonworks 和 Cloudera 之前使用的许可模式进行了整合。
Fayson
2019/07/17
3.7K1
setInterval 和 setTimeout 用法
setInterval 定时器,开始执行后,每间隔指定时间执行一次,除非清除定时器 用法: setInterval(function(){ 方法… },1000);// 间隔时间 setTimeout 是在指定的时间后,执行该事件 用法: setTimeout(function(){ 方法…. },1000); clearInterval(); // 清除定时器 <html> <head> <title>js</title> </head> <body> <script> test();
IT架构圈
2018/06/01
1K0
嘭,setTimeout炸了
其中第二个参数是需要延时执行的毫秒数,大家应该都知道这个时间是不准确的,可以理解为最短延时。至于为什么是不准确,事件循环了解一下。
歪马
2020/04/07
4760
点击加载更多

相似问题

承诺与setTimeout

22

setTimeout还承诺

10

javascript承诺setTimeout

23

承诺的setTimeout

20

用setTimeout链接承诺

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档