标签: channel

RabbitMQ和通道与连接之间的关系

RabbitMQ的Java客户端具有以下概念:

  • Connection - 与RabbitMQ服务器实例的连接
  • Channel - ???
  • 使用者线程池 - 使用RabbitMQ服务器队列消息的线程池
  • 队列 - 以FIFO顺序保存消息的结构

我想了解的关系,更重要的是,该协会之间.

  1. 我还不太确定它Channel是什么,除了这是你发布和使用的结构,以及它是从一个开放的连接创建的.如果有人可以向我解释"频道"代表什么,那么可能有助于澄清一些事情.
  2. 频道和队列之间有什么关系?可以使用相同的通道与多个队列进行通信,还是必须为1:1?
  3. Queue和Consumer Pool之间有什么关系?多个消费者可以订阅同一个队列吗?同一个消费者可以使用多个队列吗?或者是1:1的关系?

在此先感谢您的帮助!

java messaging channel amqp rabbitmq

158
推荐指数
4
解决办法
6万
查看次数

是否可以打开频道?

如果我从不检查其状态,是否可以永久打开Go通道(从不关闭通道)?它会导致内存泄漏吗?以下代码可以吗?

func (requestCh chan<- Request) GetResponse(data RequestData) Response {
    reply := make(chan Response)
    requestCh <- Request{data: data, replyCh: reply}
    return <-reply
}
Run Code Online (Sandbox Code Playgroud)

channel go

142
推荐指数
5
解决办法
3万
查看次数

PackagesNotFoundError:当前渠道无法使用以下软件包:

我对Python有些新意.我在一系列项目中使用过它,但实际上并不需要偏离其标准设置.我正在尝试安装一些新的软件包来访问大学任务所需的功能.当我尝试安装时,我得到以下内容:

(base) C:\Anaconda2\Jupyter>conda install -c python-control -c cyclus slycot control
Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels:

  - slycot
  - control

Current channels:

  - https://conda.anaconda.org/python-control/win-64
  - https://conda.anaconda.org/python-control/noarch
  - https://conda.anaconda.org/cyclus/win-64

...
Run Code Online (Sandbox Code Playgroud)

还有一堆类似上面的其他渠道.

我一直在寻找解决方案,但没有发现任何重大问题.我已经看到它可能是Windows的一个问题,这就是我正在使用它.过去我不知道发生了什么.

请记住,我并不真正了解渠道和套餐的运作方式,因此对此问题的任何见解都会很棒.

install channel conda python-control

83
推荐指数
5
解决办法
12万
查看次数

Golang - 什么是通道缓冲区大小?

我正在尝试创建一个异步通道,我一直在关注http://golang.org/ref/spec#Making_slices_maps_and_channels.

c := make(chan int, 10)         // channel with a buffer size of 10
Run Code Online (Sandbox Code Playgroud)

缓冲区大小是10是什么意思?具体的缓冲区大小是什么代表/限制?

channel go

75
推荐指数
2
解决办法
4万
查看次数

没有阅读,如何检查频道是否关闭?

这是@Jimt编写的Go中的工作者和控制器模式的一个很好的例子,回答" 是否有一些优雅的方式来暂停和恢复golang中的任何其他goroutine? "

package main

import (
    "fmt"
    "runtime"
    "sync"
    "time"
)

// Possible worker states.
const (
    Stopped = 0
    Paused  = 1
    Running = 2
)

// Maximum number of workers.
const WorkerCount = 1000

func main() {
    // Launch workers.
    var wg sync.WaitGroup
    wg.Add(WorkerCount + 1)

    workers := make([]chan int, WorkerCount)
    for i := range workers {
        workers[i] = make(chan int)

        go func(i int) {
            worker(i, workers[i])
            wg.Done()
        }(i)
    }

    // Launch controller routine.
    go func() { …
Run Code Online (Sandbox Code Playgroud)

channel go

64
推荐指数
3
解决办法
9万
查看次数

WebRTC使用TCP还是UDP?

这听起来像一个非常基本的问题,但我需要确认

  1. WebRTC是否使用TCP或UDP作为其对等传输?我怎么知道 ?
  2. 我看到有可靠性模式和DTLS协议,它们如何影响?
  3. Media和DataChannel的传输方式是否相同?
  4. 如何在TCP和UDP之间切换?

我问这个是因为我知道浏览器对并行连接的数量有限制(我认为他们谈论TCP),并且UDP连接可能不受限制.

udp tcp channel transport webrtc

64
推荐指数
1
解决办法
3万
查看次数

Go渠道是如何实施的?

在(简要)回顾Go语言规范,有效Go和Go内存模型后,我仍然不清楚Go渠道如何在幕后工作.

他们是什么样的结构?它们的行为类似于线程安全的队列/数组.

他们的实现是否依赖于架构?

channel go

62
推荐指数
3
解决办法
9841
查看次数

如何将YouTube频道嵌入网页

任何人都可以建议我如何将youtube频道嵌入网页 - 我从各个网站获取相互冲突的信息,如果可能的话,最好使用自定义播放器?谢谢

embed youtube video channel

57
推荐指数
4
解决办法
23万
查看次数

RabbitMQ示例:多个线程,通道和队列

我刚刚阅读了RabbitMQ的Java API文档,发现它非常丰富且直截了当.如何设置简单Channel的发布/消费的示例非常容易理解.但这是一个非常简单/基本的例子,它给我留下了一个重要的问题:如何设置1+ Channels来发布/消费多个队列?

比方说,我有上有3个队列中的RabbitMQ服务器:logging,security_eventscustomer_orders.因此,我们要么需要一个Channel能够发布/消费所有3个队列,或者更有可能需要3个独立的Channels队列,每个队列都专用于一个队列.

除此之外,RabbitMQ的最佳实践要求我们Channel为每个消费者线程设置1 个.对于这个例子,让我们说security_events是罚款,只有1消费者线程,但loggingcustomer_order都需要5个线程来处理卷.所以,如果我理解正确,这是否意味着我们需要:

  • Channel用于发布/消费的1 和1个消费者线程security_events; 和
  • Channels用于发布/消费的5 和5个消费者线程logging; 和
  • Channels用于发布/消费的5 和5个消费者线程customer_orders

如果我的理解在这里被误导,请先纠正我.无论哪种方式,一些厌倦战斗的RabbitMQ老手能帮助我"连接点"和一个体面的代码示例来设置符合我要求的发布者/消费者吗?提前致谢!

java messaging multithreading channel rabbitmq

56
推荐指数
2
解决办法
6万
查看次数

在go(golang)函数中将通道作为参数传递的不同方法

我正在阅读一些代码并说几种不同的方式来传递频道.也许他们是一样的,但我想知道是否有任何差异,因为我在网上找不到文件:

1)

func serve(ch <-chan interface{}){ //do stuff }
Run Code Online (Sandbox Code Playgroud)

2)

func serve(ch chan<- interface{}){ //do stuff }
Run Code Online (Sandbox Code Playgroud)

3)

func serve(ch chan interface{}){ //do stuff }
Run Code Online (Sandbox Code Playgroud)

4)

func server(ch *chan interface{}){ //do stuff}
Run Code Online (Sandbox Code Playgroud)

我想知道它们之间有什么区别,如果它们只是等同的方式来做同样的事情:在不同的goroutines周围传递一个通道.

注意:我知道没有理由将指针传递给chan,map或slice或函数值,因为这些都是内部包含指针的引用类型(如果您希望被调用者更改,则会出现异常引用类型标题).我提供它的唯一原因是为了完整性(即真正提供可以尝试将通道作为参数传递的每种方式,并且有希望地提出问题,引用所有方法来进行此操作并对它们进行比较).

concurrency channel go

45
推荐指数
3
解决办法
4万
查看次数