ID:a1958980-5f7c-495b-b2d8-2cfc01c8adfb, 原因channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no exchange 'task.direct' in vhost '/', class-id=60, method-id=40)
时间: 2024-04-25 21:27:07 浏览: 146
这个错误信息表示 RabbitMQ 无法找到名为 "task.direct" 的交换器。可能的原因是您的代码或配置中指定了一个不存在的交换器名称。
您可以检查您的代码或配置文件中是否正确指定了交换器名称,并确保该交换器已经被正确地声明和创建。您还可以使用 RabbitMQ 管理控制台来查看交换器列表,并确保 "task.direct" 交换器存在于列表中。
如果您确定交换器已经存在,但仍然无法解决问题,可能需要重新启动 RabbitMQ 服务。
相关问题
.commodity-di .general, .draft_status { font-size: 14px; color: #e3ea07; margin-bottom: 10px; } .commodity-di .general { margin-bottom: 15px; } .commodity-di .pay_title { font-size: 14px; color: #10bdd8; border-radius: 10px; margin-top: -35px; margin-left: -1px; padding-bottom: 5px; } .commodity-di .pay_title span { background: linear-gradient(#15c6cf38, #0ab0e647); padding: 5px 30px 5px 30px; border-left: 1px dashed #15c8ca8f; border-top-left-radius: 10px; border-top-right-radius: 10px; border-bottom: none; } .commodity-di .pay-content { margin-top: 50px; border-left: 1px dashed #15c8ca8f; border-bottom: 1px dashed #15c8ca8f; border-right: 1px dashed #15c8ca8f; background: linear-gradient(#18cfc300, #97e2ef14); border-radius: 10px; border-top-left-radius: 0; } .commodity-di .pay_list { padding-left: 15px; padding-right: 15px; } 帮我用以上CSS做出一款渐渐显示的弹窗效果,并且要配合html
好的,下面是一个简单的渐显弹窗的样式和HTML代码:
HTML代码:
```
<div class="modal-wrapper">
<div class="modal">
<div class="modal-header">
<h3>提示</h3>
<button class="close-btn">×</button>
</div>
<div class="modal-body">
<p>这是一个渐显弹窗。</p>
</div>
<div class="modal-footer">
<button class="confirm-btn">确定</button>
<button class="cancel-btn">取消</button>
</div>
</div>
</div>
```
CSS代码:
```
/* 弹窗外层容器 */
.modal-wrapper {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.6);
z-index: 9999;
display: none;
}
/* 弹窗容器 */
.modal {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 400px;
background-color: #fff;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
opacity: 0;
}
/* 弹窗标题栏 */
.modal-header {
padding: 10px;
text-align: center;
background-color: #f5f5f5;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
}
/* 弹窗内容区域 */
.modal-body {
padding: 20px;
text-align: center;
}
/* 弹窗底部按钮区域 */
.modal-footer {
padding: 10px;
text-align: center;
background-color: #f5f5f5;
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
}
/* 确认按钮样式 */
.confirm-btn {
background-color: #4caf50;
color: #fff;
border: none;
padding: 10px 20px;
border-radius: 5px;
margin-right: 10px;
}
/* 取消按钮样式 */
.cancel-btn {
background-color: #f44336;
color: #fff;
border: none;
padding: 10px 20px;
border-radius: 5px;
}
/* 关闭按钮样式 */
.close-btn {
position: absolute;
top: 0;
right: 0;
font-size: 30px;
color: #aaa;
background-color: transparent;
border: none;
padding: 0 10px;
outline: none;
}
/* 弹窗渐显动画 */
.modal.fade-in {
animation: fade-in 0.5s forwards;
}
@keyframes fade-in {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
```
JavaScript代码:
```
// 获取弹窗元素
var modalWrapper = document.querySelector('.modal-wrapper');
var modal = document.querySelector('.modal');
// 弹窗渐显函数
function fadeInModal() {
modal.classList.add('fade-in');
modalWrapper.style.display = 'block';
}
// 弹窗关闭函数
function closeModal() {
modal.classList.remove('fade-in');
modalWrapper.style.display = 'none';
}
// 确认按钮点击事件处理函数
function handleConfirmClick() {
console.log('点击了确认按钮');
closeModal();
}
// 取消按钮点击事件处理函数
function handleCancelClick() {
console.log('点击了取消按钮');
closeModal();
}
// 关闭按钮点击事件处理函数
function handleCloseClick() {
console.log('点击了关闭按钮');
closeModal();
}
// 绑定点击事件
document.querySelector('.confirm-btn').addEventListener('click', handleConfirmClick);
document.querySelector('.cancel-btn').addEventListener('click', handleCancelClick);
document.querySelector('.close-btn').addEventListener('click', handleCloseClick);
// 调用弹窗渐显函数
fadeInModal();
```
这是一个简单的渐显弹窗效果,你可以根据具体的需求进行自定义修改。
这段代码是干什么用的# -*- coding: utf-8 -*- import time import uuid import hashlib import base64 import ssl import urllib.request import hmac from hashlib import sha256 # 必填,请参考"开发准备"获取如下数据,替换为实际值 realUrl = 'https://rtcpns.cn-north-1.myhuaweicloud.com/rest/caas/relationnumber/partners/v1.0' #APP接入地址+接口访问URI APP_KEY = "a1********" #APP_Key APP_SECRET = "cfc8********" #APP_Secret ''' 选填,各参数要求请参考"AXB模式解绑接口" subscriptionId和relationNum为二选一关系,两者都携带时以subscriptionId为准 ''' subscriptionId = '****' #指定"AXB模式绑定接口"返回的绑定ID进行解绑 relationNum = '+86170****0001' #指定X号码(隐私号码)进行解绑 def buildAKSKHeader(appKey, appSecret): now = time.strftime('%Y-%m-%dT%H:%M:%SZ') #Created nonce = str(uuid.uuid4()).replace('-','') #Nonce digist = hmac.new(appSecret.encode(), (nonce + now).encode(), digestmod=sha256).digest() digestBase64 = base64.b64encode(digist).decode() #PasswordDigest return 'UsernameToken Username="{}",PasswordDigest="{}",Nonce="{}",Created="{}"'.format(appKey, digestBase64, nonce, now); def main(): # 请求URL参数 formData = urllib.parse.urlencode({ 'subscriptionId':subscriptionId, 'relationNum':relationNum }) #完整请求地址 fullUrl = realUrl + '?' + formData req = urllib.request.Request(url=fullUrl, method='DELETE') #请求方法为DELETE # 请求Headers参数 req.add_header('Authorization', 'AKSK realm="SDP",profile="UsernameToken",type="Appkey"') req.add_header('X-AKSK', buildAKSKHeader(APP_KEY, APP_SECRET)) req.add_header('Content-Type', 'application/json;charset=UTF-8') # 为防止因HTTPS证书认证失败造成API调用失败,需要先忽略证书信任问题 ssl._create_default_https_context = ssl._create_unverified_context try: print(formData) #打印请求数据 r = urllib.request.urlopen(req) #发送请求 print(r.read().decode('utf-8')) #打印响应结果 except urllib.error.HTTPError as e: print(e.code) print(e.read().decode('utf-8')) #打印错误信息 except urllib.error.URLError as e: print(e.reason) if __name__ == '__main__': main()
这段代码实现的是使用 Python 发送一个 DELETE 请求,访问华为云服务端提供的 AXB模式解绑接口,对指定的X号码进行解绑操作。主要包含以下步骤:
1. 构造请求地址,包括实际请求地址和请求参数。
2. 构造请求头,包括认证信息和请求内容类型。
3. 发送 HTTP DELETE 请求,等待服务端响应。
4. 处理服务端响应,包括对响应状态码和响应内容进行解析和处理。
需要注意的是,在发送 HTTP 请求时需要考虑安全性、可靠性和性能等方面的问题。比如,可以使用 AK/SK 进行认证,使用 HTTPS 协议进行加密通信,使用缓存技术优化性能等。
同时,代码中使用了 urllib 库来进行 HTTP 请求的发送和处理,这是 Python 标准库中自带的 HTTP 请求库,支持多种 HTTP 请求方法和数据传输方式。
阅读全文