小编Alp*_*Alp的帖子

与RabbitMQ一起玩

我正在尝试使用websockets将一些数据从php应用程序发送到用户的浏览器.因此我决定将Swoole与RabbitMQ结合使用.

这是我第一次使用websockets并在阅读了一些关于Socket.IO,Ratchet等的帖子后,我决定停止使用Swoole,因为它是用C编写的,并且可以方便地与php一起使用.

这就是我理解使用websockets启用数据传输的想法:1)在CLI中启动RabbitMQ worker和Swoole服务器2)php应用程序向RabbitMQ发送数据3)RabbitMQ向worker发送带有数据的消息4)Worker接收带有数据的消息+建立与Swoole套接字服务器的套接字连接.5)Swoole服务器向所有连接广播数据

问题是如何将Swoole套接字服务器与RabbitMQ绑定?或者如何让RabbitMQ与Swoole建立连接并向其发送数据?

这是代码:

Swoole服务器(swoole_sever.php)

$server = new \swoole_websocket_server("0.0.0.0", 2345, SWOOLE_BASE);

$server->on('open', function(\Swoole\Websocket\Server $server, $req)
{
    echo "connection open: {$req->fd}\n";
});

$server->on('message', function($server, \Swoole\Websocket\Frame $frame)
{
    echo "received message: {$frame->data}\n";
    $server->push($frame->fd, json_encode(["hello", "world"]));
});

$server->on('close', function($server, $fd)
{
    echo "connection close: {$fd}\n";
});

$server->start();
Run Code Online (Sandbox Code Playgroud)

工作者从RabbitMQ接收消息,然后连接到Swoole并通过套接字连接(worker.php)广播消息

$connection = new AMQPStreamConnection('0.0.0.0', 5672, 'guest', 'guest');
$channel = $connection->channel();

$channel->queue_declare('task_queue', false, true, false, false);

echo ' [*] Waiting for messages. To exit press CTRL+C', "\n";

$callback = function($msg){
    echo " …
Run Code Online (Sandbox Code Playgroud)

php sockets rabbitmq websocket swoole

7
推荐指数
1
解决办法
1225
查看次数

获取PowerMock错误:java.lang.AbstractMethodError:org.powermock.api.mockito.internal.mockmaker.PowerMockMaker

我收到PowerMock错误,但我没有使用PowerMocking.我正在使用正常的嘲弄.这是我要测试的课程:

            import java.util.List;

            import org.apache.commons.lang.StringUtils;
            import org.springframework.beans.factory.annotation.Autowired;
            import org.springframework.stereotype.Component;


            @Component
            public class IlinqBeanDataBuilder {

                @Autowired
                private Settings settings;

                private static final String SERVICE_CODE_FOR_FACILITY_COUNTRY = "SERVICE_CODE_FOR_FACILITY_COUNTRY";
                private static final String SERVICE_CODE_A_CONSTANT = "A";

                private static final String HARD_DOWN = "HARD DOWN";
                private static final String QUICK_QUESTION = "QUICK QUESTION";
                private static final String PARTIAL_DOWN = "PARTIAL DOWN";

                private static final String COMPLETELY_DOWN = "Completely Down";
                private static final String UP = "Up";
                private static final String PARTIALLY_DOWN = "Partially Down";

                public …
Run Code Online (Sandbox Code Playgroud)

java

6
推荐指数
1
解决办法
1766
查看次数

如果行以数字开头,则用_替换空格或-s

我有一个文本文件如下:

#1xx Informational responses
100=Continue
101=Switching Protocols
102=Processing
#2xx Success
200=OK
201=Created
202=Accepted
203=Non-Authoritative Information
204=No Content
205=Reset Content
206=Partial Content
207=Multi-Status
208=Already Reported
226=IM Used   
Run Code Online (Sandbox Code Playgroud)

我想要做的是将其转换为下面的一个:

#1xx_Informational responses
100=Continue
101=Switching_Protocols
102=Processing
#2xx_Success
200=OK
201=Created
202=Accepted
203=Non_Authoritative_Information
204=No_Content
205=Reset_Content
206=Partial_Content
207=Multi_Status
208=Already_Reported
226=IM_Used
Run Code Online (Sandbox Code Playgroud)

我可以用:

:%s/[ \|-]/_/g  
Run Code Online (Sandbox Code Playgroud)

但它无条件地在所有行中改变空格或_和_,包括第一行:

#1xx_Informational_responses
Run Code Online (Sandbox Code Playgroud)

我不要那个.相反,我想要实现的是只有当一行以数字开头时才用_替换空格和-s.对于所有其他线路,我不想执行替换操作.

有没有办法"有条件地"执行更换操作?我不想处理行号,行号可能会改变.我想要关于线的内容的答案(从这种情况的数字开始),而不是行号.

提前致谢.

regex vim replace

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

Java | int方法| 我需要ELSE {Return nothing}

我遇到过一种情况,我需要使用一种方法来检查10到50之间的数字的两位数之和是否大于10,然后显示该数字.我必须使用for循环.

这是我的主要内容:

public class nested_loop2 
{ 
public static void main(String args[])  
{ 
    for (int i=10;i<=50;i++){
       System.out.println(ax(i));       
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的方法:

   public static int ax(int i){
       int a=i/10;
       int b=i%10;
       if((a+b)>10){
           return i; 
       }
       else { 
          return 0;
       }
    }
 }
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我希望它只显示那些通过验证的特定数字.在当前状态下,它还会为所有不适合的打印出0.我不希望它返回0,我只是希望它不返回else {}语句的任何内容.

java methods if-statement return

1
推荐指数
1
解决办法
2779
查看次数

标签 统计

java ×2

if-statement ×1

methods ×1

php ×1

rabbitmq ×1

regex ×1

replace ×1

return ×1

sockets ×1

swoole ×1

vim ×1

websocket ×1