[cTaskExecutor-5] o.s.a.r.l.SimpleMessageListenerContainer : Failed to check/redeclare auto-delete queue(s).
时间: 2024-02-24 16:44:59 浏览: 397
这是Spring AMQP的一个警告,它表示 SimpleMessageListenerContainer 没有成功检查或重新声明自动删除队列。可能原因是 RabbitMQ 服务器有一些连接问题,或者您的应用程序无法正确地与 RabbitMQ 服务器通信。您可以检查您的 RabbitMQ 服务器是否正常工作,以及您的应用程序是否正确地配置了与 RabbitMQ 服务器的连接参数。您还可以尝试重新启动您的应用程序和 RabbitMQ 服务器,看看问题是否解决。
相关问题
2025-03-23 23:17:14.231 WARN 30304 --- [tContainer#0-16] o.s.a.r.l.SimpleMessageListenerContainer : Consumer raised exception, processing can restart if the connection factory supports it. Exception summary: org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection timed out: getsockopt 2025-03-23 23:17:14.231 INFO 30304 --- [tContainer#0-16] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@6193ec97: tags=[[]], channel=null, acknowledgeMode=AUTO local queue size=0 2025-03-23 23:17:14.233 INFO 30304 --- [tContainer#0-17] o.s.a.r.c.CachingConnectionFactory : Attempting to connect to: [192.168.124.89:5673] 2025-03-23 23:17:35.263 ERROR 30304 --- [tContainer#0-17] o.s.a.r.l.SimpleMessageListenerContainer : Failed to check/redeclare auto-delete queue(s). 2025-03-23 23:17:35.263 INFO 30304 --- [tContainer#0-17] o.s.a.r.c.CachingConnectionFactory : Attempting to connect to: [192.168.124.89:5673] 2025-03-23 23:18:01.442 WARN 30304 --- [tContainer#0-17] o.s.a.r.l.SimpleMessageListenerContainer : Consumer raised exception, processing can restart if the connection factory supports it. Exception summary: org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection timed out: getsockopt 2025-03-23 23:18:01.442 INFO 30304 --- [tContainer#0-17] o.s.a.r.l.SimpleMessageListenerContainer : Restarting Consumer@4b422927: tags=[[]], channel=null, acknowledgeMode=AUTO local queue size=0 2025-03-23 23:18:01.444 INFO 30304 --- [tContainer#0-18] o.s.a.r.c.CachingConnectionFactory : Attempting to connect to: [192.168.124.89:5673]
从日志信息来看,您的应用程序正在尝试通过 RabbitMQ 消息队列服务进行通信,并遇到了连接超时的问题。以下是关于这个问题的具体分析以及解决方案建议:
### 日志内容解析
1. **WARN 和 ERROR 级别的错误**
- `org.springframework.amqp.AmqpConnectException` 表明 Spring AMQP 客户端无法成功连接到指定的 RabbitMQ 服务器地址 (`192.168.124.89:5673`)。
- 错误提示 `java.net.ConnectException: Connection timed out: getsockopt` 显示连接操作因为超时而失败。
2. **自动重启机制触发**
- Spring 的消息监听容器会捕获异常并尝试重新启动消费者线程,这使得系统具备一定的容错能力。
3. **网络连接反复失败**
- 应用程序多次尝试重连目标 RabbitMQ 实例均未果,最终导致任务延迟或中断的风险增加。
---
### 解决方案及优化方向
#### 1. 核对 RabbitMQ 服务状态
首先确认 RabbitMQ 是否正常运行于 IP 地址 `192.168.124.89` 并开放了正确的端口号 `5673`:
- 如果使用默认配置,则通常应当检查的是标准端口 `5672` 或 SSL 加密模式下的 `5671`;
- 验证防火墙规则是否允许客户端访问该服务;
#### 2. 调整 CachingConnectionFactory 参数设置
可以适当延长初始建立链接的时间窗口避免频繁抛出 timeout 异常:
```properties
spring.rabbitmq.connection-timeout=30000 # 单位毫秒,默认值可能过短需要调整至合理范围如这里设为30s
```
此外考虑启用心跳保持选项防止长周期空闲状态下断开连接影响稳定性:
```yaml
spring:
rabbitmq:
listener:
simple:
retry:
enabled: true
initial-interval: 5000ms # 第一次重试间隔时间设定示例
max-attempts: 5 # 最大连续失败次数限制前暂停业务处理直到恢复稳定为止
```
#### 3. 监控与报警集成
引入外部监控工具持续追踪关键指标变化趋势比如延迟率、吞吐量等以便及时发现问题苗头所在并且快速响应修复措施减少损失扩大可能性同时记录完整历史数据方便事后回溯查找根本原因加以改进提高整体健壮程度!
---
连接rabbitma是报错: Failed to check/redeclare auto-delete queue(s).怎么去解决
对于连接RabbitMQ时出现"Failed to check/redeclare auto-delete queue(s)"的错误,可以尝试以下解决方法:
1. 确保RabbitMQ服务器正在运行:检查RabbitMQ服务器是否已经启动,并且可以通过指定的连接参数进行访问。
2. 检查队列名称:确认使用的队列名称是否正确。确保队列名在RabbitMQ中是唯一的,并且没有被其他连接或代码声明。
3. 删除重复队列:如果已经存在重复的队列声明,可以尝试删除这些队列并重新运行代码。可以使用RabbitMQ管理界面或命令行工具来删除队列。
4. 检查权限:确保连接到RabbitMQ的用户具有适当的权限来声明和访问队列。检查用户的权限设置,并根据需要进行调整。
5. 检查网络连接:确保网络连接正常,没有防火墙或代理服务器阻止与RabbitMQ服务器的通信。
如果以上方法都没有解决问题,可以尝试重新安装RabbitMQ或与RabbitMQ社区寻求进一步的帮助。
阅读全文
相关推荐















DYMOLA可以做一个输出接口将换热器模型summary中的制冷量(换热量)导出吗
model CrossFlowHX "Fin and tube moist air vle fluid cross flow HX"
extends
ThermalSystems.HeatExchangers.FinAndTube.MoistAirVLEFluid.BaseClasses.PartialHX(
final nFinSideParallelHydraulicFlows=hxGeometry.nParallelTubes*
nCells,
final nFinSideParallelHydraulicFlowsPerCell=hxGeometry.nParallelTubes,
final nTubeSideParallelHydraulicFlowsPerCell=hxGeometry.nTubeSideParallelHydraulicFlows,
moistAirCell(
cellGeometry(each final length=hxGeometry.totalHXDepth),
each final useFalseDynamics=false,
each final pressureDropMoistAirInitial=
pressureDropInitialMoistAir),
moistAirA(
T_phxi(
p=portA_gas.p,
h=noEvent(actualStream(portA_gas.h_outflow)),
xi=noEvent(actualStream(portA_gas.xi_outflow))),
phi_phxi(
p=portA_gas.p,
h=noEvent(actualStream(portA_gas.h_outflow)),
xi=noEvent(actualStream(portA_gas.xi_outflow))),
d_phxi(
p=portA_gas.p,
h=noEvent(actualStream(portA_gas.h_outflow)),
xi=noEvent(actualStream(portA_gas.xi_outflow)))),
moistAirB(
T_phxi(
p=portB_gas.p,
h=noEvent(actualStream(portB_gas.h_outflow)),
xi=noEvent(actualStream(portB_gas.xi_outflow))),
phi_phxi(
p=portB_gas.p,
h=noEvent(actualStream(portB_gas.h_outflow)),
xi=noEvent(actualStream(portB_gas.xi_outflow))),
d_phxi(
p=portB_gas.p,
h=noEvent(actualStream(portB_gas.h_outflow)),
xi=noEvent(actualStream(portB_gas.xi_outflow)))),
vleFluidA(T_phxi(
p=portA_vle.p,
h=noEvent(actualStream(portA_vle.h_outflow)),
xi=noEvent(actualStream(portA_vle.xi_outflow))), d_phxi(
p=portA_vle.p,
h=noEvent(actualStream(portA_vle.h_outflow)),
xi=noEvent(actualStream(portA_vle.xi_outflow)))),
vleFluidB(T_phxi(
p=portB_vle.p,
h=noEvent(actualStream(portB_vle.h_outflow)),
xi=noEvent(actualStream(portB_vle.xi_outflow))), d_phxi(
p=portB_vle.p,
h=noEvent(actualStream(portB_vle.h_outflow)),
xi=noEvent(actualStream(portB_vle.xi_outflow)))),
redeclare record SummaryClass =
ThermalSystems.HeatExchangers.FinAndTube.MoistAirVLEFluid.Summaries.CrossSummary,
summary(
p_vle_A=portA_vle.p,
p_vle_B=portB_vle.p,
T_vle_A=vleFluidA.T_phxi(),
T_vle_B=vleFluidB.T_phxi(),
T_degC_vle_A=Modelica.Units.Conversions.to_degC(vleFluidA.T_phxi()),
T_degC_vle_B=Modelica.Units.Conversions.to_degC(vleFluidB.T_phxi()),
q_vle_A=vleFluidA.q_phxi(
portA_vle.p,
noEvent(actualStream(portA_vle.h_outflow)),
noEvent(actualStream(portA_vle.xi_outflow))),
q_vle_B=vleFluidB.q_phxi(
portB_vle.p,
noEvent(actualStream(portB_vle.h_outflow)),
noEvent(actualStream(portB_vle.xi_outflow))),
h_vle_A=noEvent(actualStream(portA_vle.h_outflow)),
h_vle_B=noEvent(actualStream(portB_vle.h_outflow)),
d_vle_A=vleFluidA.d_phxi(),
d_vle_B=vleFluidB.d_phxi(),
m_flow_vle_A=portA_vle.m_flow,
m_flow_vle_B=portB_vle.m_flow,
dp_vle=portA_vle.p - portB_vle.p,
superheating=noEvent(max(0, noEvent(max(vleFluidB.T_phxi() -
vleFluidB.T_dew_pxi(portB_vle.p, noEvent(actualStream(
portB_vle.xi_outflow))), vleFluidA.T_phxi() -
vleFluidA.T_dew_pxi(portA_vle.p, noEvent(actualStream(
portA_vle.xi_outflow))))))),
subcooling=noEvent(max(0, noEvent(max(vleFluidB.T_bubble_pxi(
portB_vle.p, noEvent(actualStream(portB_vle.xi_outflow))) -
vleFluidB.T_phxi(), vleFluidA.T_bubble_pxi(portA_vle.p,
noEvent(actualStream(portA_vle.xi_outflow))) -
vleFluidA.T_phxi())))),
p_air_A=portA_gas.p,
p_air_B=portB_gas.p,
T_air_A=moistAirA.T_phxi(),
T_air_B=moistAirB.T_phxi(),
T_degC_air_A=Modelica.Units.Conversions.to_degC(moistAirA.T_phxi()),
T_degC_air_B=Modelica.Units.Conversions.to_degC(moistAirB.T_phxi()),
h_air_A=noEvent(actualStream(portA_gas.h_outflow)),
h_air_B=noEvent(actualStream(portB_gas.h_outflow)),
m_flow_air_A=portA_gas.m_flow,
m_flow_air_B=portB_gas.m_flow,
humRatio_air_A=
MediaConfiguration.Media.GasObjectFunctions.humidityRatio_xi(
noEvent(actualStream(portA_gas.xi_outflow)), moistAirA.gasPointer),
humRatio_air_B=
MediaConfiguration.Media.GasObjectFunctions.humidityRatio_xi(
noEvent(actualStream(portB_gas.xi_outflow)), moistAirB.gasPointer),
phi_air_A=moistAirA.phi_phxi(),
phi_air_B=moistAirB.phi_phxi(),
w_air_A=portA_gas.m_flow/moistAirA.d_phxi()/hxGeometry.totalFinSideCrossSectionalArea,
w_air_B=-portB_gas.m_flow/moistAirB.d_phxi()/hxGeometry.totalFinSideCrossSectionalArea,
dp_air=portA_gas.p - portB_gas.p,
arrays(
final n=nCells,
final m=gasType.nc - 1,
T_vle_port=
ThermalSystems.Internals.getPortValuesStirredVolumeCells(
vleFluidA.T_phxi(),
vleFluidCell.vleFluid.T,
vleFluidB.T_phxi(),
vleFluidCell[2:end].portA.m_flow),
T_degC_vle_port=Modelica.Units.Conversions.to_degC(summary.arrays.T_vle_port),
T_vle_cell=vleFluidCell.vleFluid.T,
T_degC_vle_cell=Modelica.Units.Conversions.to_degC(summary.arrays.T_vle_cell),
T_finSideWallSurface_cell=moistAirCell.wallSurfaceTemperature,
T_degC_finSideWallSurface_cell=
Modelica.Units.Conversions.to_degC(summary.arrays.T_finSideWallSurface_cell),
T_wall_cell=moistAirCell.wallMaterial.T,
T_degC_wall_cell=Modelica.Units.Conversions.to_degC(summary.arrays.T_wall_cell),
T_air_portA={if ((moistAirCellFlowType == "flow A-B") or ((
moistAirCellFlowType <> "flow B-A") and noEvent(
moistAirCell[i].moistAirPortA.m_flow >= 0))) then
moistAirCell[i].moistAir_inStream.T else moistAir_outflow[i].T
for i in 1:nCells},
T_degC_air_portA=Modelica.Units.Conversions.to_degC(summary.arrays.T_air_portA),
T_air_portB={if ((moistAirCellFlowType == "flow A-B") or ((
moistAirCellFlowType <> "flow B-A") and noEvent(
moistAirCell[i].moistAirPortA.m_flow >= 0))) then
moistAir_outflow[i].T else moistAirCell[i].moistAir_inStream.T
for i in 1:nCells},
T_degC_air_portB=Modelica.Units.Conversions.to_degC(summary.arrays.T_air_portB),
alpha_vle_cell=vleFluidCell.alphaAState ./ vleFluidCell.cellGeometry.heatTransferArea,
q_vle_port=
ThermalSystems.Internals.getPortValuesStirredVolumeCells(
vleFluidA.q_phxi(
portA_vle.p,
noEvent(actualStream(portA_vle.h_outflow)),
noEvent(actualStream(portA_vle.xi_outflow))),
vleFluidCell.vleFluid.q,
vleFluidB.q_phxi(
portB_vle.p,
noEvent(actualStream(portB_vle.h_outflow)),
noEvent(actualStream(portB_vle.xi_outflow))),
vleFluidCell[2:end].portA.m_flow),
p_vle_port=cat(
1,
{vleFluidCell[1].portA.p},
vleFluidCell.portB.p),
h_vle_port=cat(
1,
{noEvent(actualStream(vleFluidCell[1].portA.h_outflow))},
noEvent(actualStream(vleFluidCell.portB.h_outflow))),
d_vle_port=
ThermalSystems.Internals.getPortValuesStirredVolumeCells(
vleFluidA.d_phxi(),
vleFluidCell.vleFluid.d,
vleFluidB.d_phxi(),
vleFluidCell[2:end].portA.m_flow),
m_flow_vle_port=cat(
1,
{vleFluidCell[1].portA.m_flow},
-vleFluidCell.portB.m_flow),
w_vle_port=summary.arrays.m_flow_vle_port ./ (summary.arrays.d_vle_port
.* vleFluidCell[1].cellGeometry.hydraulicCrossSectionalArea
.* hxGeometry.nTubeSideParallelHydraulicFlows),
p_air_portA=moistAirCell.moistAirPortA.p,
p_air_portB=moistAirCell.moistAirPortB.p,
h_air_portA=noEvent(actualStream(moistAirCell.moistAirPortA.h_outflow)),
h_air_portB=noEvent(actualStream(moistAirCell.moistAirPortB.h_outflow)),
xi_air_portA={noEvent(actualStream(moistAirCell[:].moistAirPortA.xi_outflow[
i])) for i in 1:gasType.nc - 1},
xi_air_portB={noEvent(actualStream(moistAirCell[:].moistAirPortB.xi_outflow[
i])) for i in 1:gasType.nc - 1},
xis_air_wall_cell=moistAirCell.xiCondensingMoistAirWallSaturation,
phi_air_portA={if ((moistAirCellFlowType == "flow A-B") or ((
moistAirCellFlowType <> "flow B-A") and noEvent(
moistAirCell[i].moistAirPortA.m_flow >= 0))) then
moistAirCell[i].moistAir_inStream.phi else moistAir_outflow[
i].phi for i in 1:nCells},
phi_air_portB={if ((moistAirCellFlowType == "flow A-B") or ((
moistAirCellFlowType <> "flow B-A") and noEvent(
moistAirCell[i].moistAirPortA.m_flow >= 0))) then
moistAir_outflow[i].phi else moistAirCell[i].moistAir_inStream.phi
for i in 1:nCells},
alpha_air_cell=moistAirCell.heatTransfer.alphaA ./ moistAirCell.cellGeometry.heatTransferArea)));
/****************** Connectors *******************/
ThermalSystems.Connectors.VLEFluidPort portB_vle(final vleFluidType=
vleFluidType) "VLEFluid portB" annotation (Placement(
transformation(extent={{130,-10},{150,10}}, rotation=0)));
ThermalSystems.Connectors.VLEFluidPort portA_vle(final vleFluidType=
vleFluidType) "VLEFluid portA" annotation (Placement(
transformation(extent={{-150,-10},{-130,10}}, rotation=0)));
ThermalSystems.Connectors.GasPort portA_gas(final gasType=gasType)
"Gas portA" annotation (Placement(transformation(extent={{-10,130},
{10,150}}, rotation=0)));
ThermalSystems.Connectors.GasPort portB_gas(final gasType=gasType)
"Gas portB" annotation (Placement(transformation(extent={{-10,-150},
{10,-130}}, rotation=0)));
/****************** Splitter and joiner *******************/
parameter String splittingModeMoistAir = "fixed"
"Mode of mass flow rate splitting"
annotation(Dialog(group="Moist Air Cells", tab="Advanced"), choices(
choice="fixed" "fixed ratio based on geometry",
choice="momentum balance" "dynamic ratio based on momentum balance"));
protected
SplitterJoiner.GasSplitterJoiner gasSplitterJoiner(
final nPorts1 = nCells,
final nPorts2 = 1,
final gasType=gasType,
final cellFlowType=moistAirCellFlowType,
final useFalseDynamics=useFalseDynamicsMoistAir,
final falseDynamicsTimeConstant=falseDynamicsTimeConstantMoistAir,
final pressureDropInitial=pressureDropInitialMoistAir,
final fixedPressureDropInitial=fixedPressureDropInitialMoistAir,
final splittingMode=splittingModeMoistAir)
annotation (Placement(transformation(extent={{-26,-46},{26,-26}})));
/********* Summary ***************/
protected
parameter Boolean includeSummaryArrays = true
"Obsolete & unused parameter for array entries in summary"
annotation(Dialog(tab="Advanced", group="Summary"));
protected
MediaConfiguration.Media.Gas_ph[nCells] moistAir_outflow(
final p = {if ((moistAirCellFlowType == "flow A-B") or ((moistAirCellFlowType <> "flow B-A") and noEvent(moistAirCell[i].moistAirPortA.m_flow >= 0))) then moistAirCell[i].moistAirPortB.p else moistAirCell[i].moistAirPortA.p for i in 1:nCells},
final h = {if ((moistAirCellFlowType == "flow A-B") or ((moistAirCellFlowType <> "flow B-A") and noEvent(moistAirCell[i].moistAirPortA.m_flow >= 0))) then moistAirCell[i].moistAirPortB.h_outflow else moistAirCell[i].moistAirPortA.h_outflow for i in 1:nCells},
final xi = {if ((moistAirCellFlowType == "flow A-B") or ((moistAirCellFlowType <> "flow B-A") and noEvent(moistAirCell[i].moistAirPortA.m_flow >= 0))) then moistAirCell[i].moistAirPortB.xi_outflow else moistAirCell[i].moistAirPortA.xi_outflow for i in 1:nCells},
each final gasType=gasType,
each computeTransportProperties=false)
if includeSummary
annotation (Placement(transformation(extent={{-50,-100},{-30,-80}},rotation=
0)));
equation
// Connect wall and vleFluid cells with eachother
for i in 1:nCells-1 loop
connect(vleFluidCell[i].portB, vleFluidCell[i+1].portA);
if connectWallCells then
connect(moistAirCell[i].wallHeatPortE, moistAirCell[i+1].wallHeatPortW);
end if;
end for;
connect(vleFluidCell[nCells].portB, portB_vle)
annotation (Line(
points={{10,30},{100,30},{100,0},{140,0}},
color={153,204,0},
thickness=0.5));
connect(portA_vle, vleFluidCell[1].portA) annotation (Line(
points={{-140,0},{-100,0},{-100,30},{-10,30}},
color={153,204,0},
thickness=0.5));
connect(vleFluidCell.heatPort, moistAirCell.wallHeatPortN) annotation (Line(
points={{0,20},{0,-20}},
color={204,0,0},
pattern=LinePattern.Solid,
thickness=0.5));
connect(gasSplitterJoiner.outlet, portB_gas) annotation (Line(
points={{26,-36},{40,-36},{40,-100},{0,-100},{0,-140}},
color={255,153,0},
thickness=0.5,
smooth=Smooth.None));
connect(gasSplitterJoiner.inlet, portA_gas) annotation (Line(
points={{-26,-36},{-40,-36},{-40,100},{0,100},{0,140}},
color={255,153,0},
thickness=0.5,
smooth=Smooth.None));
connect(gasSplitterJoiner.outlets[:, 1], moistAirCell.moistAirPortA)
annotation (Line(
points={{-14,-36},{-10,-36}},
color={255,153,0},
thickness=0.5,
smooth=Smooth.None));
connect(gasSplitterJoiner.inlets[:, 1], moistAirCell.moistAirPortB)
annotation (Line(
points={{14,-36},{10,-36}},
color={255,153,0},
thickness=0.5,
smooth=Smooth.None));
annotation(Documentation(info="<html>
-Back to Overview.
Model overview
VLE fluid
mass balance: transient (default) or steady state
energy balance: transient
differential states: h, xi, alphaAState, pressureDropState (default) or derivative of pressure in the PressureStateElement
momentum equation: pressure drop or isobaric
Warning ![]()
warning_h_limit
Indicates that the specific enthalpy at the outlet of at least one VLEFLuidCell is limited .
For further information you can check the variable warning_h_limit
and the User's Guide Warnings section.
Wall
energy balance: transient
differential states: -
Moist air
mass balance: transient
energy balance: transient
differential states: H_WallPlusFilm, massFilm, pressureDropState
momentum equation: pressure drop or isobaric
</html>"),
Diagram(coordinateSystem(
preserveAspectRatio=true,
extent={{-140,-140},{140,140}},
initialScale=0.1)),
Icon(coordinateSystem(
preserveAspectRatio=false,
extent={{-140,-140},{140,140}},
initialScale=0.1), graphics={
Bitmap(extent={{-140,-140},{140,140}},
imageSource=
"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HS7eGJsTG9WNyUJI7Rhkq2tL6WePPPNgmz6SO+5q3OHSsnhsVHFZPL1ubNFkYbEhF33XeQ/sXh77o39yWGxIDfrUq3Qz53aZu8pig5CGST+QKP3k/npXruoPqe+RJ93Mrv7fmYTUkCHvIZv6a0BnFdKWfq+ybW6y6ERIrpE2EQPo2X0r6fteek8W1VtRg2JD+r6959/NXFGRxYZaBtmOrY+9+Mhax1auYnNio4orlh2bLISU1yCbykf/5Kn4gUSdnCxqPM1zjVTdjb+uXbh6stH/9UNT10gl568s79uxZJnbYkNXzCgkLDaAayQQEggJEBIICYQECAmEBEICIQFCAiGBkEBIgJBASCAkEBIgJBASCAmEBAgJhARCAiEBQgIhgZBASICQQEggJEBIICQQEggJEBIICYQEQgKEBEICIYGQACGBkEBIICRASCAkEBIICRASCAmEBEIChARCAiEBQgIhgZBASICQQEggJBASICQQEggJhAQICYQEQgIhAUICIYGQQEiAkEBIICRASCAkEBIICRASCAmEBEIChARCAiGBkAAhgZBASCAkQEggJBASCAkQEggJhARCAoQEQgIhAUICIYGQQEgAAAAAA/wjwAAuFnEcIolTZQAAAABJRU5ErkJggg==",
fileName="modelica://ThermalSystems/Resources/Images/CrossFlowHX_VLEGas.png"),
Text(
extent={{-46,110},{194,70}},
lineColor={153,204,0},
textString=
"(%pressureStateID)"),
Text(
extent={{-140,0},{-100,-40}},
lineColor={0,0,0},
textString=
"1"),
Text(
extent={{100,0},{140,-40}},
lineColor={0,0,0},
textString=
"n"),
Text(
extent={{-132,130},{-92,90}},
lineColor={0,0,0},
textString=
"A"),
Text(
extent={{92,-92},{132,-132}},
lineColor={0,0,0},
textString=
"B"),
Bitmap(
extent=DynamicSelect({{0,0},{0,0}}, if visualizeWarnings and warning_h_limit > 0.5 then {{-140,148},{-103.05,180}} else {{0,0},{0,0}}),
fileName="modelica://ThermalSystems/Resources/Images/Warning.png")}));
end CrossFlowHX;
换热器模型代码如上
warning_h_limit
and the User's Guide Warnings section.


